From d170e0b4e7302dfc182643fec2210f3af18ff7e3 Mon Sep 17 00:00:00 2001 From: Marco Pracucci Date: Tue, 22 Nov 2022 11:30:11 +0100 Subject: [PATCH 1/2] Added 'Mimir / Overview networking' dashboard Signed-off-by: Marco Pracucci --- CHANGELOG.md | 1 + .../dashboards/overview-networking/index.md | 19 + .../mimir-overview-networking.png | Bin 0 -> 100539 bytes .../dashboards/mimir-overview-networking.json | 1156 +++++++++++++++++ .../dashboards/mimir-overview.json | 6 +- .../mimir-mixin-tools/screenshots/app.js | 1 + operations/mimir-mixin/config.libsonnet | 97 +- operations/mimir-mixin/dashboards.libsonnet | 1 + .../dashboards/dashboard-utils.libsonnet | 4 +- .../dashboards/overview-networking.libsonnet | 21 + .../mimir-mixin/dashboards/overview.libsonnet | 4 + 11 files changed, 1284 insertions(+), 26 deletions(-) create mode 100644 docs/sources/operators-guide/monitor-grafana-mimir/dashboards/overview-networking/index.md create mode 100644 docs/sources/operators-guide/monitor-grafana-mimir/dashboards/overview-networking/mimir-overview-networking.png create mode 100644 operations/mimir-mixin-compiled/dashboards/mimir-overview-networking.json create mode 100644 operations/mimir-mixin/dashboards/overview-networking.libsonnet diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f50d731fea..1f710ff18bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -42,6 +42,7 @@ * [CHANGE] Configuration: The format of the `autoscaling` section of the configuration has changed to support more components. #3378 * Instead of specific config variables for each component, they are listed in a dictionary. For example, `autoscaling.querier_enabled` becomes `autoscaling.querier.enabled`. * [FEATURE] Dashboards: Added "Mimir / Overview resources" dashboard, providing an high level view over a Mimir cluster resources utilization. #3481 +* [FEATURE] Dashboards: Added "Mimir / Overview networking" dashboard, providing an high level view over a Mimir cluster network bandwidth, inflight requests and TCP connections. #3487 * [ENHANCEMENT] Alerts: Add MimirRingMembersMismatch firing when a component does not have the expected number of running jobs. #2404 * [ENHANCEMENT] Dashboards: Add optional row about the Distributor's metric forwarding feature to the `Mimir / Writes` dashboard. #3182 #3394 #3394 #3461 * [ENHANCEMENT] Dashboards: Remove the "Instance Mapper" row from the "Alertmanager Resources Dashboard". This is a Grafana Cloud specific service and not relevant for external users. #3152 diff --git a/docs/sources/operators-guide/monitor-grafana-mimir/dashboards/overview-networking/index.md b/docs/sources/operators-guide/monitor-grafana-mimir/dashboards/overview-networking/index.md new file mode 100644 index 00000000000..41a6ab5df38 --- /dev/null +++ b/docs/sources/operators-guide/monitor-grafana-mimir/dashboards/overview-networking/index.md @@ -0,0 +1,19 @@ +--- +description: View an example Overview networking dashboard. +menuTitle: Overview networking +title: Grafana Mimir Overview networking dashboard +weight: 7 +--- + +# Grafana Mimir Overview networking dashboard + +The Overview networking dashboard shows receive and transmit bandwidth, in-flight requests, and TCP connections. +The dashboard groups Mimir components into "Writes", "Reads" and "Backend". + +This dashboard requires [additional resources metrics]({{< relref "../../requirements.md#additional-resources-metrics" >}}). + +## Example + +The following example shows a Overview networking dashboard from a demo cluster. + +![Grafana Mimir overview networking dashboard](mimir-overview-networking.png) diff --git a/docs/sources/operators-guide/monitor-grafana-mimir/dashboards/overview-networking/mimir-overview-networking.png b/docs/sources/operators-guide/monitor-grafana-mimir/dashboards/overview-networking/mimir-overview-networking.png new file mode 100644 index 0000000000000000000000000000000000000000..befbe7a28baa720e2a5b0bf86b1466b3e38c4dca GIT binary patch literal 100539 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 z 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\n- Writes resources\n- Writes networking\n- Overview resources\n", + "content": "These panels show an overview on the write path. \nTo examine the write path in detail, see a specific dashboard:\n\n- Writes\n- Writes resources\n- Writes networking\n- Overview resources\n- Overview networking\n", "datasource": null, "description": "", "id": 4, @@ -446,7 +446,7 @@ "height": "250px", "panels": [ { - "content": "These panels show an overview on the read path. \nTo examine the read path in detail, see a specific dashboard:\n\n- Reads\n- Reads resources\n- Reads networking\n- Overview resources\n- Queries\n- Compactor\n", + "content": "These panels show an overview on the read path. \nTo examine the read path in detail, see a specific dashboard:\n\n- Reads\n- Reads resources\n- Reads networking\n- Overview resources\n- Overview networking\n- Queries\n- Compactor\n", "datasource": null, "description": "", "id": 8, @@ -810,7 +810,7 @@ "height": "250px", "panels": [ { - "content": "These panels show an overview on the recording and alerting rules evaluation.\nTo examine the rules evaluation and alerts notifications in detail, see a specific dashboard:\n\n- Ruler\n- Alertmanager\n- Alertmanager resources\n- Overview resources\n", + "content": "These panels show an overview on the recording and alerting rules evaluation.\nTo examine the rules evaluation and alerts notifications in detail, see a specific dashboard:\n\n- Ruler\n- Alertmanager\n- Alertmanager resources\n- Overview resources\n- Overview networking\n", "datasource": null, "description": "", "id": 12, diff --git a/operations/mimir-mixin-tools/screenshots/app.js b/operations/mimir-mixin-tools/screenshots/app.js index f613bf0b0d2..2b1e50fb4bf 100644 --- a/operations/mimir-mixin-tools/screenshots/app.js +++ b/operations/mimir-mixin-tools/screenshots/app.js @@ -17,6 +17,7 @@ const customViewportHeight = { 'mimir-overrides': 800, 'mimir-overview': 1400, 'mimir-overview-resources': 1700, + 'mimir-overview-networking': 1100, 'mimir-reads-networking': 2000, 'mimir-rollout-progress': 800, 'mimir-scaling': 800, diff --git a/operations/mimir-mixin/config.libsonnet b/operations/mimir-mixin/config.libsonnet index ac085e00993..18382ede4d2 100644 --- a/operations/mimir-mixin/config.libsonnet +++ b/operations/mimir-mixin/config.libsonnet @@ -22,6 +22,43 @@ // modify the job selectors in the dashboard queries. singleBinary: false, + // This is mapping between a Mimir component name and the regular expression that should be used + // to match its instance and container name. Mimir jsonnet and Helm guarantee that the instance name + // (e.g. Kubernetes Deployment) and container name always match, so it's safe to use a shared mapping. + // + // This mapping is intentionally local and can't be overridden. If the final user needs to customize + // dashboards and alerts, they should override the final matcher regexp (e.g. container_names or instance_names). + local componentNameRegexp = { + // Microservices deployment mode. + compactor: 'compactor', + alertmanager: 'alertmanager', + ingester: 'ingester', + distributor: 'distributor', + querier: 'querier', + query_frontend: 'query-frontend', + query_scheduler: 'query-scheduler', + ruler: 'ruler', + ruler_querier: 'ruler-querier', + ruler_query_frontend: 'ruler-query-frontend', + ruler_query_scheduler: 'ruler-query-scheduler', + store_gateway: 'store-gateway', + overrides_exporter: 'overrides-exporter', + gateway: '(gateway|cortex-gw|cortex-gw-internal)', + + // Read-write deployment mode. + mimir_write: 'mimir-write', + mimir_read: 'mimir-read', + mimir_backend: 'mimir-backend', + }, + + // Some dashboards show panels grouping together multiple components of a given "path". + // This mapping configures which components belong to each group. + component_groups: { + write: ['distributor', 'ingester', 'mimir_write'], + read: ['query_frontend', 'querier', 'ruler_query_frontend', 'ruler_querier', 'mimir_read'], + backend: ['query_scheduler', 'ruler_query_scheduler', 'ruler', 'store_gateway', 'compactor', 'alertmanager', 'overrides_exporter', 'mimir_backend'], + }, + // These are used by the dashboards and allow for the simultaneous display of // microservice and single binary Mimir clusters. // Whenever you do any change here, please reflect it in the doc at: @@ -49,11 +86,45 @@ backend: '(ruler|query-scheduler.*|ruler-query-scheduler.*|store-gateway.*|compactor.*|alertmanager|overrides-exporter|mimir-backend.*)', }, + // Name selectors for different application instances, using the "per_instance_label". + instance_names: { + local helmCompatibleMatcher = function(regexp) '(.*-mimir-)?%s' % regexp, + local instanceMatcher = function(regexp) helmCompatibleMatcher('%s.*' % regexp), + + // Microservices deployment mode. + compactor: instanceMatcher(componentNameRegexp.compactor), + alertmanager: instanceMatcher(componentNameRegexp.alertmanager), + ingester: instanceMatcher(componentNameRegexp.ingester), + distributor: instanceMatcher(componentNameRegexp.distributor), + querier: instanceMatcher(componentNameRegexp.querier), + ruler: instanceMatcher(componentNameRegexp.ruler), + query_frontend: instanceMatcher(componentNameRegexp.query_frontend), + query_scheduler: instanceMatcher(componentNameRegexp.query_scheduler), + store_gateway: instanceMatcher(componentNameRegexp.store_gateway), + overrides_exporter: instanceMatcher(componentNameRegexp.overrides_exporter), + gateway: instanceMatcher(componentNameRegexp.gateway), + + // Read-write deployment mode. + mimir_write: instanceMatcher(componentNameRegexp.mimir_write), + mimir_read: instanceMatcher(componentNameRegexp.mimir_read), + mimir_backend: instanceMatcher(componentNameRegexp.mimir_backend), + + // The following are instance matchers used to select all components in a given "path". + local componentsGroupMatcher = function(components) + instanceMatcher('(%s)' % std.join('|', std.map(function(name) componentNameRegexp[name], components))), + + write: componentsGroupMatcher($._config.component_groups.write), + read: componentsGroupMatcher($._config.component_groups.read), + backend: componentsGroupMatcher($._config.component_groups.backend), + }, + container_names: { // The following are container matchers used to select all components in a given "path". - write: 'distributor|ingester|mimir-write', - read: 'query-frontend|querier|ruler-query-frontend|ruler-querier|mimir-read', - backend: 'query-scheduler|ruler-query-scheduler|ruler|store-gateway|compactor|alertmanager|overrides-exporter|mimir-backend', + local componentsGroupMatcher = function(components) std.join('|', std.map(function(name) componentNameRegexp[name], components)), + + write: componentsGroupMatcher($._config.component_groups.write), + read: componentsGroupMatcher($._config.component_groups.read), + backend: componentsGroupMatcher($._config.component_groups.backend), }, // The label used to differentiate between different Kubernetes clusters. @@ -87,22 +158,6 @@ // The label used to differentiate between different application instances (i.e. 'pod' in a kubernetes install). per_instance_label: 'pod', - // Name selectors for different application instances, using the "per_instance_label". - instance_names: { - local helmCompatibleName = function(name) '(.*-mimir-)?%s' % name, - - compactor: helmCompatibleName('compactor.*'), - alertmanager: helmCompatibleName('alertmanager.*'), - ingester: helmCompatibleName('ingester.*'), - distributor: helmCompatibleName('distributor.*'), - querier: helmCompatibleName('querier.*'), - ruler: helmCompatibleName('ruler.*'), - query_frontend: helmCompatibleName('query-frontend.*'), - query_scheduler: helmCompatibleName('query-scheduler.*'), - store_gateway: helmCompatibleName('store-gateway.*'), - gateway: helmCompatibleName('(gateway|cortex-gw|cortex-gw).*'), - }, - deployment_type: 'kubernetes', // System mount point where mimir stores its data, used for baremetal // deployment only. @@ -132,7 +187,7 @@ memory_rss_usage: 'max by(%(instance)s) (container_memory_rss{%(namespace)s,container=~"%(instanceName)s"})', memory_rss_limit: 'min(container_spec_memory_limit_bytes{%(namespace)s,container=~"%(instanceName)s"} > 0)', memory_rss_request: 'min(kube_pod_container_resource_requests{%(namespace)s,container=~"%(instanceName)s",resource="memory"})', - network: 'sum by(%(instance)s) (rate(%(metric)s{%(namespace)s,%(instance)s=~"%(instanceName)s"}[$__rate_interval]))', + network: 'sum by(%(instanceLabel)s) (rate(%(metric)s{%(namespaceMatcher)s,%(instanceLabel)s=~"%(instanceName)s"}[$__rate_interval]))', disk_writes: ||| sum by(%(instanceLabel)s, %(instance)s, device) ( @@ -187,7 +242,7 @@ node_memory_Active_anon_bytes{%(namespace)s,%(instance)s=~".*%(instanceName)s.*"} + node_memory_SwapCached_bytes{%(namespace)s,%(instance)s=~".*%(instanceName)s.*"} |||, - network: 'sum by(%(instance)s) (rate(%(metric)s{%(namespace)s,%(instance)s=~".*%(instanceName)s.*"}[$__rate_interval]))', + network: 'sum by(%(instanceLabel)s) (rate(%(metric)s{%(namespaceMatcher)s,%(instanceLabel)s=~".*%(instanceName)s.*"}[$__rate_interval]))', disk_writes: ||| sum by(%(instanceLabel)s, %(instance)s, device) ( diff --git a/operations/mimir-mixin/dashboards.libsonnet b/operations/mimir-mixin/dashboards.libsonnet index 9d4e95eff56..c4e9d6f9e9a 100644 --- a/operations/mimir-mixin/dashboards.libsonnet +++ b/operations/mimir-mixin/dashboards.libsonnet @@ -20,6 +20,7 @@ (if !$._config.resources_dashboards_enabled then {} else (import 'dashboards/overview-resources.libsonnet') + + (import 'dashboards/overview-networking.libsonnet') + (import 'dashboards/reads-resources.libsonnet') + (import 'dashboards/remote-ruler-reads-resources.libsonnet') + (import 'dashboards/reads-networking.libsonnet') + diff --git a/operations/mimir-mixin/dashboards/dashboard-utils.libsonnet b/operations/mimir-mixin/dashboards/dashboard-utils.libsonnet index 39a73b0f1b5..8b9df703e9e 100644 --- a/operations/mimir-mixin/dashboards/dashboard-utils.libsonnet +++ b/operations/mimir-mixin/dashboards/dashboard-utils.libsonnet @@ -320,9 +320,9 @@ local utils = import 'mixin-utils/utils.libsonnet'; $.panel(title) + $.queryPanel( $._config.resources_panel_queries[$._config.deployment_type].network % { - namespace: $.namespaceMatcher(), + namespaceMatcher: $.namespaceMatcher(), metric: metric, - instance: $._config.per_instance_label, + instanceLabel: $._config.per_instance_label, instanceName: instanceName, }, '{{%s}}' % $._config.per_instance_label ) + diff --git a/operations/mimir-mixin/dashboards/overview-networking.libsonnet b/operations/mimir-mixin/dashboards/overview-networking.libsonnet new file mode 100644 index 00000000000..dd75ff744d2 --- /dev/null +++ b/operations/mimir-mixin/dashboards/overview-networking.libsonnet @@ -0,0 +1,21 @@ +local utils = import 'mixin-utils/utils.libsonnet'; +local filename = 'mimir-overview-networking.json'; + +(import 'dashboard-utils.libsonnet') { + [filename]: + ($.dashboard('Overview networking') + { uid: std.md5(filename) }) + .addClusterSelectorTemplates(false) + .addRowIf($._config.gateway_enabled, $.jobNetworkingRow('Gateway', 'gateway')) + .addRow($.jobNetworkingRow('Writes', 'write')) + .addRow($.jobNetworkingRow('Reads', 'read')) + .addRow($.jobNetworkingRow('Backend', 'backend')) + + { + templating+: { + list: [ + // Do not allow to include all namespaces. + l + (if (l.name == 'namespace') then { includeAll: false } else {}) + for l in super.list + ], + }, + }, +} diff --git a/operations/mimir-mixin/dashboards/overview.libsonnet b/operations/mimir-mixin/dashboards/overview.libsonnet index 44281746dc9..a441e543832 100644 --- a/operations/mimir-mixin/dashboards/overview.libsonnet +++ b/operations/mimir-mixin/dashboards/overview.libsonnet @@ -18,6 +18,7 @@ local filename = 'mimir-overview.json'; alertmanagerResourcesDashboardURL: $.dashboardURL('mimir-alertmanager-resources.json'), compactorDashboardURL: $.dashboardURL('mimir-compactor.json'), objectStoreDashboardURL: $.dashboardURL('mimir-object-store.json'), + overviewNetworkingDashboardURL: $.dashboardURL('mimir-overview-networking.json'), overviewResourcesDashboardURL: $.dashboardURL('mimir-overview-resources.json'), queriesDashboardURL: $.dashboardURL('mimir-queries.json'), readsDashboardURL: $.dashboardURL('mimir-reads.json'), @@ -108,6 +109,7 @@ local filename = 'mimir-overview.json'; - Writes resources - Writes networking - Overview resources + - Overview networking ||| % helpers), ) .addPanel( @@ -149,6 +151,7 @@ local filename = 'mimir-overview.json'; - Reads resources - Reads networking - Overview resources + - Overview networking - Queries - Compactor ||| % helpers), @@ -204,6 +207,7 @@ local filename = 'mimir-overview.json'; - Alertmanager - Alertmanager resources - Overview resources + - Overview networking ||| % helpers), ) .addPanel( From f021c783298d125e136d4e0382c6d2b29d5965a3 Mon Sep 17 00:00:00 2001 From: Marco Pracucci Date: Tue, 22 Nov 2022 15:04:57 +0100 Subject: [PATCH 2/2] Do not expose component groups config Signed-off-by: Marco Pracucci --- operations/mimir-mixin/config.libsonnet | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/operations/mimir-mixin/config.libsonnet b/operations/mimir-mixin/config.libsonnet index 18382ede4d2..852d782f218 100644 --- a/operations/mimir-mixin/config.libsonnet +++ b/operations/mimir-mixin/config.libsonnet @@ -53,7 +53,7 @@ // Some dashboards show panels grouping together multiple components of a given "path". // This mapping configures which components belong to each group. - component_groups: { + local componentGroups = { write: ['distributor', 'ingester', 'mimir_write'], read: ['query_frontend', 'querier', 'ruler_query_frontend', 'ruler_querier', 'mimir_read'], backend: ['query_scheduler', 'ruler_query_scheduler', 'ruler', 'store_gateway', 'compactor', 'alertmanager', 'overrides_exporter', 'mimir_backend'], @@ -113,18 +113,18 @@ local componentsGroupMatcher = function(components) instanceMatcher('(%s)' % std.join('|', std.map(function(name) componentNameRegexp[name], components))), - write: componentsGroupMatcher($._config.component_groups.write), - read: componentsGroupMatcher($._config.component_groups.read), - backend: componentsGroupMatcher($._config.component_groups.backend), + write: componentsGroupMatcher(componentGroups.write), + read: componentsGroupMatcher(componentGroups.read), + backend: componentsGroupMatcher(componentGroups.backend), }, container_names: { // The following are container matchers used to select all components in a given "path". local componentsGroupMatcher = function(components) std.join('|', std.map(function(name) componentNameRegexp[name], components)), - write: componentsGroupMatcher($._config.component_groups.write), - read: componentsGroupMatcher($._config.component_groups.read), - backend: componentsGroupMatcher($._config.component_groups.backend), + write: componentsGroupMatcher(componentGroups.write), + read: componentsGroupMatcher(componentGroups.read), + backend: componentsGroupMatcher(componentGroups.backend), }, // The label used to differentiate between different Kubernetes clusters.