diff --git a/jsonnet/kube-prometheus/versions.json b/jsonnet/kube-prometheus/versions.json index 1ce2476e4a065eff8bef97b04b6f35af38d4af6f..70fc17b776806086c9571d8ef4630a241327a2df 100644 --- a/jsonnet/kube-prometheus/versions.json +++ b/jsonnet/kube-prometheus/versions.json @@ -1,12 +1,12 @@ { "alertmanager": "0.28.0", "blackboxExporter": "0.25.0", - "grafana": "11.5.0", - "kubeStateMetrics": "2.14.0", + "grafana": "11.5.1", + "kubeStateMetrics": "2.15.0", "nodeExporter": "1.8.2", "prometheus": "3.1.0", "prometheusAdapter": "0.12.0", - "prometheusOperator": "0.79.2", + "prometheusOperator": "0.80.0", "kubeRbacProxy": "0.18.2", "configmapReload": "0.14.0", "pyrra": "0.6.4" diff --git a/jsonnetfile.lock.json b/jsonnetfile.lock.json index fdf40dd97e8bc293dbaaeb1834ea661adc731d20..85308f6991a3fa244cf6321962a8c317da83a6ca 100644 --- a/jsonnetfile.lock.json +++ b/jsonnetfile.lock.json @@ -18,7 +18,7 @@ "subdir": "contrib/mixin" } }, - "version": "b197332b135870ee7af7e9128fe16e82d46c19d7", + "version": "1ea4f435cc449216fbaa9aec16c408a734fc43e9", "sum": "XmXkOCriQIZmXwlIIFhqlJMa0e6qGWdxZD+ZDYaN0Po=" }, { @@ -78,7 +78,7 @@ "subdir": "grafana-builder" } }, - "version": "39bc80b6c67e08f6fec0d1edfdfdf908cecf66a7", + "version": "6f6821511f76cffdfaa3ccc40621c31493c12e49", "sum": "yxqWcq/N3E/a/XreeU6EuE6X7kYPnG0AspAQFKOjASo=" }, { @@ -88,7 +88,7 @@ "subdir": "mixin-utils" } }, - "version": "39bc80b6c67e08f6fec0d1edfdfdf908cecf66a7", + "version": "6f6821511f76cffdfaa3ccc40621c31493c12e49", "sum": "SRElwa/XrKAN8aZA9zvdRUx8iebl2It7KNQ7VFvMcBA=" }, { @@ -118,8 +118,8 @@ "subdir": "" } }, - "version": "1ec7a45857197f7d5633fd3997f6150ae735a0fa", - "sum": "iEv7wGQAoGSUojMK9jl8mwwFjy85LDhRj9qUZkx/KFY=" + "version": "96d585cafef95c462b1ae19b6aead456756de1b1", + "sum": "KRLU0CHmc0RovPaXaxALBSz5m11B4KE2jsZMprrO53s=" }, { "source": { @@ -128,7 +128,7 @@ "subdir": "jsonnet/kube-state-metrics" } }, - "version": "c7caee60c9f8338154b371ed8d617d9908412021", + "version": "2a95d4649b2fea55799032fb9c0b571c4ba7f776", "sum": "3bioG7CfTfY9zeu5xU4yon6Zt3kYvNkyl492nOhQxnM=" }, { @@ -138,7 +138,7 @@ "subdir": "jsonnet/kube-state-metrics-mixin" } }, - "version": "c7caee60c9f8338154b371ed8d617d9908412021", + "version": "2a95d4649b2fea55799032fb9c0b571c4ba7f776", "sum": "qclI7LwucTjBef3PkGBkKxF0mfZPbHnn4rlNWKGtR4c=" }, { @@ -148,7 +148,7 @@ "subdir": "jsonnet/mixin" } }, - "version": "d2509e58841ba0b9653d0ac8cb87b9c3b5d5a0f9", + "version": "4fe92aaee5f76ad2fbb7ff4e3939d12a697a2e59", "sum": "gi+knjdxs2T715iIQIntrimbHRgHnpM8IFBJDD1gYfs=", "name": "prometheus-operator-mixin" }, @@ -159,8 +159,8 @@ "subdir": "jsonnet/prometheus-operator" } }, - "version": "d2509e58841ba0b9653d0ac8cb87b9c3b5d5a0f9", - "sum": "jCnFMqNkehVBFriIFiFcdKZ7RghgTCUXXPJkK8ZQpfk=" + "version": "4fe92aaee5f76ad2fbb7ff4e3939d12a697a2e59", + "sum": "tb5PzIT75Hv4m3kbOHXvmrlcplg+EbS4++NfTttDNOk=" }, { "source": { @@ -180,7 +180,7 @@ "subdir": "docs/node-mixin" } }, - "version": "b6b8288211c7da4f2b6e98836ce470dc8138e35d", + "version": "11365f97bef6cb0e6259d536a7e21c49e3f5c065", "sum": "xYj6VYFT/eafsbleNlC+Z2VfLy1CndyYrJs9BcTmnX8=" }, { @@ -190,8 +190,8 @@ "subdir": "documentation/prometheus-mixin" } }, - "version": "8be416a67cea1663b90e360463fb2091cb0ffe9a", - "sum": "CwaQpW66lHx+++sY2g4BgrUTEFZtlDnQzFjo0AlgfIg=", + "version": "b74cebf6bfff2a422d930e188c3e577307d95710", + "sum": "2c+wttfee9TwuQJZIkNV7Tekem74Qgc7iZ842P28rNw=", "name": "prometheus" }, { @@ -212,7 +212,7 @@ "subdir": "mixin" } }, - "version": "57efc2aacd6fd53822cd37f39d77d65fac9890ea", + "version": "38f4c3c6a212d50eeef764d838de2519eee6409c", "sum": "ieCD4eMgGbOlrI8GmckGPHBGQDcLasE1rULYq56W/bs=", "name": "thanos-mixin" }, diff --git a/manifests/grafana-config.yaml b/manifests/grafana-config.yaml index daab97a89cd00d9fb5f2e34b1806d20428f8e307..9aceb74fb7da989bffc8fdd14f66d92904735d9e 100644 --- a/manifests/grafana-config.yaml +++ b/manifests/grafana-config.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-config namespace: monitoring stringData: diff --git a/manifests/grafana-dashboardDatasources.yaml b/manifests/grafana-dashboardDatasources.yaml index eca54101aa43ce006d3496ce8e6e5e0c60546229..c850a7a36a9c550fae716589f9b4e3b0774100e2 100644 --- a/manifests/grafana-dashboardDatasources.yaml +++ b/manifests/grafana-dashboardDatasources.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-datasources namespace: monitoring stringData: diff --git a/manifests/grafana-dashboardDefinitions.yaml b/manifests/grafana-dashboardDefinitions.yaml index 2cf20bc45ccfa9da63d85574452ec95160ecdf8f..112ed83e28901de2c3590ab6843a8ebaaa2f9f26 100644 --- a/manifests/grafana-dashboardDefinitions.yaml +++ b/manifests/grafana-dashboardDefinitions.yaml @@ -360,7 +360,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-alertmanager-overview namespace: monitoring - apiVersion: v1 @@ -1242,7 +1242,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-apiserver namespace: monitoring - apiVersion: v1 @@ -2056,7 +2056,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-cluster-total namespace: monitoring - apiVersion: v1 @@ -2660,7 +2660,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-controller-manager namespace: monitoring - apiVersion: v1 @@ -3285,7 +3285,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-grafana-overview namespace: monitoring - apiVersion: v1 @@ -4872,7 +4872,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-k8s-resources-cluster namespace: monitoring - apiVersion: v1 @@ -5513,7 +5513,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-k8s-resources-multicluster namespace: monitoring - apiVersion: v1 @@ -7031,7 +7031,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-k8s-resources-namespace namespace: monitoring - apiVersion: v1 @@ -7712,7 +7712,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-k8s-resources-node namespace: monitoring - apiVersion: v1 @@ -9096,28 +9096,225 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-k8s-resources-pod namespace: monitoring - apiVersion: v1 data: - k8s-resources-workload.json: |- + k8s-resources-windows-cluster.json: |- { "editable": false, - "links": [ + "panels": [ { - "asDropdown": true, - "includeVars": true, - "keepTime": true, - "tags": [ - "kubernetes-mixin" + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "unit": "none" + } + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 0 + }, + "id": 1, + "interval": "1m", + "options": { + "colorMode": "none" + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "1 - avg(rate(windows_cpu_time_total{cluster=\"$cluster\", job=\"kubernetes-windows-exporter\", mode=\"idle\"}[$__rate_interval]))", + "instant": true + } ], - "targetBlank": false, - "title": "Kubernetes", - "type": "dashboards" - } - ], - "panels": [ + "title": "CPU Utilisation", + "type": "stat" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "unit": "percentunit" + } + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 0 + }, + "id": 2, + "interval": "1m", + "options": { + "colorMode": "none" + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\"$cluster\"}) / sum(node:windows_node_num_cpu:sum{cluster=\"$cluster\"})", + "instant": true + } + ], + "title": "CPU Requests Commitment", + "type": "stat" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "unit": "percentunit" + } + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 8, + "y": 0 + }, + "id": 3, + "interval": "1m", + "options": { + "colorMode": "none" + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\"$cluster\"}) / sum(node:windows_node_num_cpu:sum{cluster=\"$cluster\"})", + "instant": true + } + ], + "title": "CPU Limits Commitment", + "type": "stat" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "unit": "percentunit" + } + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 12, + "y": 0 + }, + "id": 4, + "interval": "1m", + "options": { + "colorMode": "none" + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "1 - sum(:windows_node_memory_MemFreeCached_bytes:sum{cluster=\"$cluster\"}) / sum(:windows_node_memory_MemTotal_bytes:sum{cluster=\"$cluster\"})", + "instant": true + } + ], + "title": "Memory Utilisation", + "type": "stat" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "unit": "percentunit" + } + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 16, + "y": 0 + }, + "id": 5, + "interval": "1m", + "options": { + "colorMode": "none" + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(kube_pod_windows_container_resource_memory_request{cluster=\"$cluster\"}) / sum(:windows_node_memory_MemTotal_bytes:sum{cluster=\"$cluster\"})", + "instant": true + } + ], + "title": "Memory Requests Commitment", + "type": "stat" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "unit": "percentunit" + } + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 20, + "y": 0 + }, + "id": 6, + "interval": "1m", + "options": { + "colorMode": "none" + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(kube_pod_windows_container_resource_memory_limit{cluster=\"$cluster\"}) / sum(:windows_node_memory_MemTotal_bytes:sum{cluster=\"$cluster\"})", + "instant": true + } + ], + "title": "Memory Limits Commitment", + "type": "stat" + }, { "datasource": { "type": "datasource", @@ -9136,9 +9333,9 @@ items: "h": 7, "w": 24, "x": 0, - "y": 0 + "y": 7 }, - "id": 1, + "id": 7, "interval": "1m", "options": { "legend": { @@ -9161,7 +9358,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", + "expr": "sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\"}) by (namespace)", "legendFormat": "__auto" } ], @@ -9190,7 +9387,7 @@ items: { "matcher": { "id": "byName", - "options": "Pod" + "options": "Namespace" }, "properties": [ { @@ -9198,7 +9395,7 @@ items: "value": [ { "title": "Drill down to pods", - "url": "/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-pod=${__data.fields.Pod}" + "url": "/d/490b402361724ab1d4c45666c1fa9b6f/k8s-resources-windows-namespace?${datasource:queryparam}&var-cluster=$cluster&var-namespace=${__data.fields.Namespace}" } ] } @@ -9210,9 +9407,9 @@ items: "h": 7, "w": 24, "x": 0, - "y": 7 + "y": 14 }, - "id": 2, + "id": 8, "pluginVersion": "v11.4.0", "targets": [ { @@ -9220,7 +9417,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", + "expr": "sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\"}) by (namespace)", "format": "table", "instant": true }, @@ -9229,7 +9426,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", + "expr": "sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\"$cluster\"}) by (namespace)", "format": "table", "instant": true }, @@ -9238,7 +9435,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n/sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", + "expr": "sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\"}) by (namespace) / sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\"$cluster\"}) by (namespace)", "format": "table", "instant": true }, @@ -9247,7 +9444,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", + "expr": "sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\"$cluster\"}) by (namespace)", "format": "table", "instant": true }, @@ -9256,7 +9453,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n/sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", + "expr": "sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\"}) by (namespace) / sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\"$cluster\"}) by (namespace)", "format": "table", "instant": true } @@ -9266,7 +9463,7 @@ items: { "id": "joinByField", "options": { - "byField": "pod", + "byField": "namespace", "mode": "outer" } }, @@ -9292,7 +9489,7 @@ items: "Value #C": 8, "Value #D": 9, "Value #E": 10, - "pod": 5 + "namespace": 5 }, "renameByName": { "Value #A": "CPU Usage", @@ -9300,7 +9497,7 @@ items: "Value #C": "CPU Requests %", "Value #D": "CPU Limits", "Value #E": "CPU Limits %", - "pod": "Pod" + "namespace": "Namespace" } } } @@ -9319,16 +9516,16 @@ items: "showPoints": "never", "spanNulls": true }, - "unit": "bytes" + "unit": "decbytes" } }, "gridPos": { "h": 7, "w": 24, "x": 0, - "y": 14 + "y": 21 }, - "id": 3, + "id": 9, "interval": "1m", "options": { "legend": { @@ -9351,11 +9548,11 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", + "expr": "sum(windows_container_private_working_set_usage{cluster=\"$cluster\"}) by (namespace)", "legendFormat": "__auto" } ], - "title": "Memory Usage", + "title": "Memory Usage (Private Working Set)", "type": "timeseries" }, { @@ -9383,17 +9580,53 @@ items: { "matcher": { "id": "byName", - "options": "Pod" + "options": "Memory Usage" }, "properties": [ { - "id": "links", - "value": [ - { - "title": "Drill down to pods", - "url": "/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-pod=${__data.fields.Pod}" - } - ] + "id": "unit", + "value": "decbytes" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Memory Requests" + }, + "properties": [ + { + "id": "unit", + "value": "decbytes" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Memory Limits" + }, + "properties": [ + { + "id": "unit", + "value": "decbytes" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Namespace" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "title": "Drill down to pods", + "url": "/d/490b402361724ab1d4c45666c1fa9b6f/k8s-resources-windows-namespace?${datasource:queryparam}&var-cluster=$cluster&var-namespace=${__data.fields.Namespace}" + } + ] } ] } @@ -9403,9 +9636,9 @@ items: "h": 7, "w": 24, "x": 0, - "y": 21 + "y": 28 }, - "id": 4, + "id": 10, "pluginVersion": "v11.4.0", "targets": [ { @@ -9413,7 +9646,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", + "expr": "sum(windows_container_private_working_set_usage{cluster=\"$cluster\"}) by (namespace)", "format": "table", "instant": true }, @@ -9422,7 +9655,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", + "expr": "sum(kube_pod_windows_container_resource_memory_request{cluster=\"$cluster\"}) by (namespace)", "format": "table", "instant": true }, @@ -9431,7 +9664,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n/sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", + "expr": "sum(windows_container_private_working_set_usage{cluster=\"$cluster\"}) by (namespace) / sum(kube_pod_windows_container_resource_memory_request{cluster=\"$cluster\"}) by (namespace)", "format": "table", "instant": true }, @@ -9440,7 +9673,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", + "expr": "sum(kube_pod_windows_container_resource_memory_limit{cluster=\"$cluster\"}) by (namespace)", "format": "table", "instant": true }, @@ -9449,17 +9682,17 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n/sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", + "expr": "sum(windows_container_private_working_set_usage{cluster=\"$cluster\"}) by (namespace) / sum(kube_pod_windows_container_resource_memory_limit{cluster=\"$cluster\"}) by (namespace)", "format": "table", "instant": true } ], - "title": "Memory Quota", + "title": "Memory Requests by Namespace", "transformations": [ { "id": "joinByField", "options": { - "byField": "pod", + "byField": "namespace", "mode": "outer" } }, @@ -9480,12 +9713,12 @@ items: "Time 3": 2, "Time 4": 3, "Time 5": 4, - "Value #A": 9, - "Value #B": 10, - "Value #C": 11, - "Value #D": 12, - "Value #E": 13, - "pod": 8 + "Value #A": 6, + "Value #B": 7, + "Value #C": 8, + "Value #D": 9, + "Value #E": 10, + "namespace": 5 }, "renameByName": { "Value #A": "Memory Usage", @@ -9493,12 +9726,121 @@ items: "Value #C": "Memory Requests %", "Value #D": "Memory Limits", "Value #E": "Memory Limits %", - "pod": "Pod" + "namespace": "Namespace" } } } ], "type": "table" + } + ], + "refresh": "10s", + "schemaVersion": 39, + "tags": [ + "kubernetes-mixin" + ], + "templating": { + "list": [ + { + "current": { + "selected": true, + "text": "default", + "value": "default" + }, + "hide": 0, + "label": "Data source", + "name": "datasource", + "query": "prometheus", + "regex": "", + "type": "datasource" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "hide": 0, + "label": "cluster", + "name": "cluster", + "query": "label_values(up{job=\"kubernetes-windows-exporter\"}, cluster)", + "refresh": 2, + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timezone": "utc", + "title": "Kubernetes / Compute Resources / Cluster(Windows)", + "uid": "4d08557fd9391b100730f2494bccac68" + } + kind: ConfigMap + metadata: + labels: + app.kubernetes.io/component: grafana + app.kubernetes.io/name: grafana + app.kubernetes.io/part-of: kube-prometheus + app.kubernetes.io/version: 11.5.1 + name: grafana-dashboard-k8s-resources-windows-cluster + namespace: monitoring +- apiVersion: v1 + data: + k8s-resources-windows-namespace.json: |- + { + "editable": false, + "panels": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + } + } + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", + "legendFormat": "__auto" + } + ], + "title": "CPU Usage", + "type": "timeseries" }, { "datasource": { @@ -9510,24 +9852,12 @@ items: { "matcher": { "id": "byRegexp", - "options": "/Bandwidth/" - }, - "properties": [ - { - "id": "unit", - "value": "Bps" - } - ] - }, - { - "matcher": { - "id": "byRegexp", - "options": "/Packets/" + "options": "/%/" }, "properties": [ { "id": "unit", - "value": "pps" + "value": "percentunit" } ] }, @@ -9542,7 +9872,7 @@ items: "value": [ { "title": "Drill down to pods", - "url": "/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-pod=${__data.fields.Pod}" + "url": "/d/40597a704a610e936dc6ed374a7ce023/k8s-resources-windows-pod?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-pod=${__data.fields.Pod}" } ] } @@ -9554,9 +9884,9 @@ items: "h": 7, "w": 24, "x": 0, - "y": 28 + "y": 7 }, - "id": 5, + "id": 2, "pluginVersion": "v11.4.0", "targets": [ { @@ -9564,16 +9894,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_receive_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", - "format": "table", - "instant": true - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "(sum(rate(container_network_transmit_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", + "expr": "sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", "format": "table", "instant": true }, @@ -9582,7 +9903,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_receive_packets_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", + "expr": "sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", "format": "table", "instant": true }, @@ -9591,7 +9912,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_transmit_packets_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", + "expr": "sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", "format": "table", "instant": true }, @@ -9600,7 +9921,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_receive_packets_dropped_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", + "expr": "sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", "format": "table", "instant": true }, @@ -9609,12 +9930,12 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_transmit_packets_dropped_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", + "expr": "sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", "format": "table", "instant": true } ], - "title": "Current Network Usage", + "title": "CPU Quota", "transformations": [ { "id": "joinByField", @@ -9632,8 +9953,7 @@ items: "Time 2": true, "Time 3": true, "Time 4": true, - "Time 5": true, - "Time 6": true + "Time 5": true }, "indexByName": { "Time 1": 0, @@ -9641,22 +9961,19 @@ items: "Time 3": 2, "Time 4": 3, "Time 5": 4, - "Time 6": 5, - "Value #A": 7, - "Value #B": 8, - "Value #C": 9, - "Value #D": 10, - "Value #E": 11, - "Value #F": 12, - "pod": 6 + "Value #A": 6, + "Value #B": 7, + "Value #C": 8, + "Value #D": 9, + "Value #E": 10, + "pod": 5 }, "renameByName": { - "Value #A": "Current Receive Bandwidth", - "Value #B": "Current Transmit Bandwidth", - "Value #C": "Rate of Received Packets", - "Value #D": "Rate of Transmitted Packets", - "Value #E": "Rate of Received Packets Dropped", - "Value #F": "Rate of Transmitted Packets Dropped", + "Value #A": "CPU Usage", + "Value #B": "CPU Requests", + "Value #C": "CPU Requests %", + "Value #D": "CPU Limits", + "Value #E": "CPU Limits %", "pod": "Pod" } } @@ -9676,16 +9993,16 @@ items: "showPoints": "never", "spanNulls": true }, - "unit": "Bps" + "unit": "decbytes" } }, "gridPos": { "h": 7, - "w": 12, + "w": 24, "x": 0, - "y": 35 + "y": 14 }, - "id": 6, + "id": 3, "interval": "1m", "options": { "legend": { @@ -9708,11 +10025,11 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_receive_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", + "expr": "sum(windows_container_private_working_set_usage{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", "legendFormat": "__auto" } ], - "title": "Receive Bandwidth", + "title": "Memory Usage (Private Working Set)", "type": "timeseries" }, { @@ -9722,36 +10039,47 @@ items: }, "fieldConfig": { "defaults": { - "custom": { - "fillOpacity": 10, - "showPoints": "never", - "spanNulls": true - }, - "unit": "Bps" - } - }, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 35 - }, - "id": 7, - "interval": "1m", - "options": { - "legend": { - "asTable": true, - "calcs": [ - "lastNotNull" - ], - "displayMode": "table", - "placement": "right", - "showLegend": true + "unit": "bytes" }, - "tooltip": { - "mode": "single" - } + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/%/" + }, + "properties": [ + { + "id": "unit", + "value": "percentunit" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Pod" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "title": "Drill down to pods", + "url": "/d/40597a704a610e936dc6ed374a7ce023/k8s-resources-windows-pod?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-pod=${__data.fields.Pod}" + } + ] + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 21 }, + "id": 4, "pluginVersion": "v11.4.0", "targets": [ { @@ -9759,64 +10087,165 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_transmit_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", - "legendFormat": "__auto" - } - ], - "title": "Transmit Bandwidth", - "type": "timeseries" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "custom": { - "fillOpacity": 10, - "showPoints": "never", - "spanNulls": true + "expr": "sum(windows_container_private_working_set_usage{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" }, - "unit": "Bps" - } - }, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 42 - }, - "id": 8, - "interval": "1m", - "options": { - "legend": { - "asTable": true, - "calcs": [ - "lastNotNull" - ], - "displayMode": "table", - "placement": "right", - "showLegend": true + "expr": "sum(kube_pod_windows_container_resource_memory_request{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", + "format": "table", + "instant": true }, - "tooltip": { - "mode": "single" - } - }, - "pluginVersion": "v11.4.0", - "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, - "expr": "(avg(rate(container_network_receive_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", - "legendFormat": "__auto" + "expr": "sum(windows_container_private_working_set_usage{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(kube_pod_windows_container_resource_memory_request{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(kube_pod_windows_container_resource_memory_limit{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(windows_container_private_working_set_usage{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(kube_pod_windows_container_resource_memory_limit{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", + "format": "table", + "instant": true } ], - "title": "Average Container Bandwidth by Pod: Received", - "type": "timeseries" - }, + "title": "Memory Quota", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "pod", + "mode": "outer" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Time 1": true, + "Time 2": true, + "Time 3": true, + "Time 4": true, + "Time 5": true + }, + "indexByName": { + "Time 1": 0, + "Time 2": 1, + "Time 3": 2, + "Time 4": 3, + "Time 5": 4, + "Value #A": 6, + "Value #B": 7, + "Value #C": 8, + "Value #D": 9, + "Value #E": 10, + "pod": 5 + }, + "renameByName": { + "Value #A": "Memory Usage", + "Value #B": "Memory Requests", + "Value #C": "Memory Requests %", + "Value #D": "Memory Limits", + "Value #E": "Memory Limits %", + "pod": "Pod" + } + } + } + ], + "type": "table" + } + ], + "refresh": "10s", + "schemaVersion": 39, + "tags": [ + "kubernetes-mixin" + ], + "templating": { + "list": [ + { + "current": { + "selected": true, + "text": "default", + "value": "default" + }, + "hide": 0, + "label": "Data source", + "name": "datasource", + "query": "prometheus", + "regex": "", + "type": "datasource" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "hide": 0, + "label": "cluster", + "name": "cluster", + "query": "label_values(up{job=\"kubernetes-windows-exporter\"}, cluster)", + "refresh": 2, + "sort": 1, + "type": "query" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "hide": 0, + "label": "namespace", + "name": "namespace", + "query": "label_values(windows_pod_container_available{cluster=\"$cluster\"}, namespace)", + "refresh": 2, + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timezone": "utc", + "title": "Kubernetes / Compute Resources / Namespace(Windows)", + "uid": "490b402361724ab1d4c45666c1fa9b6f" + } + kind: ConfigMap + metadata: + labels: + app.kubernetes.io/component: grafana + app.kubernetes.io/name: grafana + app.kubernetes.io/part-of: kube-prometheus + app.kubernetes.io/version: 11.5.1 + name: grafana-dashboard-k8s-resources-windows-namespace + namespace: monitoring +- apiVersion: v1 + data: + k8s-resources-windows-pod.json: |- + { + "editable": false, + "panels": [ { "datasource": { "type": "datasource", @@ -9828,17 +10257,16 @@ items: "fillOpacity": 10, "showPoints": "never", "spanNulls": true - }, - "unit": "Bps" + } } }, "gridPos": { "h": 7, - "w": 12, - "x": 12, - "y": 42 + "w": 24, + "x": 0, + "y": 0 }, - "id": 9, + "id": 1, "interval": "1m", "options": { "legend": { @@ -9861,11 +10289,11 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(avg(rate(container_network_transmit_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", + "expr": "sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", "legendFormat": "__auto" } ], - "title": "Average Container Bandwidth by Pod: Transmitted", + "title": "CPU Usage", "type": "timeseries" }, { @@ -9874,37 +10302,45 @@ items: "uid": "-- Mixed --" }, "fieldConfig": { - "defaults": { - "custom": { - "fillOpacity": 10, - "showPoints": "never", - "spanNulls": true + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/%/" + }, + "properties": [ + { + "id": "unit", + "value": "percentunit" + } + ] }, - "unit": "pps" - } + { + "matcher": { + "id": "byName", + "options": "Namespace" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "title": "Drill down to pods", + "url": "/d/490b402361724ab1d4c45666c1fa9b6f/k8s-resources-windows-namespace?${datasource:queryparam}&var-cluster=$cluster&var-namespace=${__data.fields.Namespace}" + } + ] + } + ] + } + ] }, "gridPos": { "h": 7, - "w": 12, + "w": 24, "x": 0, - "y": 49 - }, - "id": 10, - "interval": "1m", - "options": { - "legend": { - "asTable": true, - "calcs": [ - "lastNotNull" - ], - "displayMode": "table", - "placement": "right", - "showLegend": true - }, - "tooltip": { - "mode": "single" - } + "y": 7 }, + "id": 2, "pluginVersion": "v11.4.0", "targets": [ { @@ -9912,63 +10348,92 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_receive_packets_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", - "legendFormat": "__auto" - } - ], - "title": "Rate of Received Packets", - "type": "timeseries" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "custom": { - "fillOpacity": 10, - "showPoints": "never", - "spanNulls": true + "expr": "sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" }, - "unit": "pps" - } - }, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 49 - }, - "id": 11, - "interval": "1m", - "options": { - "legend": { - "asTable": true, - "calcs": [ - "lastNotNull" - ], - "displayMode": "table", - "placement": "right", - "showLegend": true + "expr": "sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", + "format": "table", + "instant": true }, - "tooltip": { - "mode": "single" - } - }, - "pluginVersion": "v11.4.0", - "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_transmit_packets_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", - "legendFormat": "__auto" + "expr": "sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container) / sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container) / sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", + "format": "table", + "instant": true } ], - "title": "Rate of Transmitted Packets", - "type": "timeseries" + "title": "CPU Quota", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "container", + "mode": "outer" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Time 1": true, + "Time 2": true, + "Time 3": true, + "Time 4": true, + "Time 5": true + }, + "indexByName": { + "Time 1": 0, + "Time 2": 1, + "Time 3": 2, + "Time 4": 3, + "Time 5": 4, + "Value #A": 6, + "Value #B": 7, + "Value #C": 8, + "Value #D": 9, + "Value #E": 10, + "container": 5 + }, + "renameByName": { + "Value #A": "CPU Usage", + "Value #B": "CPU Requests", + "Value #C": "CPU Requests %", + "Value #D": "CPU Limits", + "Value #E": "CPU Limits %", + "container": "Container" + } + } + } + ], + "type": "table" }, { "datasource": { @@ -9982,16 +10447,16 @@ items: "showPoints": "never", "spanNulls": true }, - "unit": "pps" + "unit": "decbytes" } }, "gridPos": { "h": 7, - "w": 12, + "w": 24, "x": 0, - "y": 56 + "y": 14 }, - "id": 12, + "id": 3, "interval": "1m", "options": { "legend": { @@ -10014,11 +10479,11 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_receive_packets_dropped_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", + "expr": "sum(windows_container_private_working_set_usage{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", "legendFormat": "__auto" } ], - "title": "Rate of Received Packets Dropped", + "title": "Memory Usage", "type": "timeseries" }, { @@ -10028,36 +10493,30 @@ items: }, "fieldConfig": { "defaults": { - "custom": { - "fillOpacity": 10, - "showPoints": "never", - "spanNulls": true - }, - "unit": "pps" - } + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/%/" + }, + "properties": [ + { + "id": "unit", + "value": "percentunit" + } + ] + } + ] }, "gridPos": { "h": 7, - "w": 12, - "x": 12, - "y": 56 - }, - "id": 13, - "interval": "1m", - "options": { - "legend": { - "asTable": true, - "calcs": [ - "lastNotNull" - ], - "displayMode": "table", - "placement": "right", - "showLegend": true - }, - "tooltip": { - "mode": "single" - } + "w": 24, + "x": 0, + "y": 21 }, + "id": 4, "pluginVersion": "v11.4.0", "targets": [ { @@ -10065,31 +10524,170 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_transmit_packets_dropped_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", - "legendFormat": "__auto" - } - ], - "title": "Rate of Transmitted Packets Dropped", - "type": "timeseries" - } - ], - "refresh": "10s", - "schemaVersion": 39, - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "selected": true, - "text": "default", - "value": "default" + "expr": "sum(windows_container_private_working_set_usage{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", + "format": "table", + "instant": true }, - "hide": 0, - "label": "Data source", - "name": "datasource", - "query": "prometheus", + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(kube_pod_windows_container_resource_memory_request{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(windows_container_private_working_set_usage{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container) / sum(kube_pod_windows_container_resource_memory_request{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(kube_pod_windows_container_resource_memory_limit{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(windows_container_private_working_set_usage{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container) / sum(kube_pod_windows_container_resource_memory_limit{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", + "format": "table", + "instant": true + } + ], + "title": "Memory Quota", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "container", + "mode": "outer" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Time 1": true, + "Time 2": true, + "Time 3": true, + "Time 4": true, + "Time 5": true + }, + "indexByName": { + "Time 1": 0, + "Time 2": 1, + "Time 3": 2, + "Time 4": 3, + "Time 5": 4, + "Value #A": 6, + "Value #B": 7, + "Value #C": 8, + "Value #D": 9, + "Value #E": 10, + "container": 5 + }, + "renameByName": { + "Value #A": "Memory Usage", + "Value #B": "Memory Requests", + "Value #C": "Memory Requests %", + "Value #D": "Memory Limits", + "Value #E": "Memory Limits %", + "container": "Container" + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "bytes" + } + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 28 + }, + "id": 5, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sort_desc(sum by (container) (rate(windows_container_network_received_bytes_total{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[$__rate_interval])))", + "legendFormat": "Received : {{ container }}" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sort_desc(sum by (container) (rate(windows_container_network_transmitted_bytes_total{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[$__rate_interval])))", + "legendFormat": "Transmitted : {{ container }}" + } + ], + "title": "Network I/O", + "type": "timeseries" + } + ], + "refresh": "10s", + "schemaVersion": 39, + "tags": [ + "kubernetes-mixin" + ], + "templating": { + "list": [ + { + "current": { + "selected": true, + "text": "default", + "value": "default" + }, + "hide": 0, + "label": "Data source", + "name": "datasource", + "query": "prometheus", "regex": "", "type": "datasource" }, @@ -10101,7 +10699,7 @@ items: "hide": 0, "label": "cluster", "name": "cluster", - "query": "label_values(up{job=\"kube-state-metrics\"}, cluster)", + "query": "label_values(up{job=\"kubernetes-windows-exporter\"}, cluster)", "refresh": 2, "sort": 1, "type": "query" @@ -10114,21 +10712,7 @@ items: "hide": 0, "label": "namespace", "name": "namespace", - "query": "label_values(kube_namespace_status_phase{job=\"kube-state-metrics\", cluster=\"$cluster\"}, namespace)", - "refresh": 2, - "sort": 1, - "type": "query" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "hide": 0, - "includeAll": true, - "label": "workload_type", - "name": "type", - "query": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\"}, workload_type)", + "query": "label_values(windows_pod_container_available{cluster=\"$cluster\"}, namespace)", "refresh": 2, "sort": 1, "type": "query" @@ -10139,9 +10723,9 @@ items: "uid": "${datasource}" }, "hide": 0, - "label": "workload", - "name": "workload", - "query": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}, workload)", + "label": "pod", + "name": "pod", + "query": "label_values(windows_pod_container_available{cluster=\"$cluster\",namespace=\"$namespace\"}, pod)", "refresh": 2, "sort": 1, "type": "query" @@ -10152,9 +10736,9 @@ items: "from": "now-1h", "to": "now" }, - "timezone": "UTC", - "title": "Kubernetes / Compute Resources / Workload", - "uid": "a164a7f0339f99e89cea5cb47e9be617" + "timezone": "utc", + "title": "Kubernetes / Compute Resources / Pod(Windows)", + "uid": "40597a704a610e936dc6ed374a7ce023" } kind: ConfigMap metadata: @@ -10162,12 +10746,12 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 - name: grafana-dashboard-k8s-resources-workload + app.kubernetes.io/version: 11.5.1 + name: grafana-dashboard-k8s-resources-windows-pod namespace: monitoring - apiVersion: v1 data: - k8s-resources-workloads-namespace.json: |- + k8s-resources-workload.json: |- { "editable": false, "links": [ @@ -10196,59 +10780,7 @@ items: "showPoints": "never", "spanNulls": true } - }, - "overrides": [ - { - "matcher": { - "id": "byFrameRefID", - "options": "B" - }, - "properties": [ - { - "id": "custom.lineStyle", - "value": { - "fill": "dash" - } - }, - { - "id": "custom.lineWidth", - "value": 2 - }, - { - "id": "color", - "value": { - "fixedColor": "red", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byFrameRefID", - "options": "C" - }, - "properties": [ - { - "id": "custom.lineStyle", - "value": { - "fill": "dash" - } - }, - { - "id": "custom.lineWidth", - "value": 2 - }, - { - "id": "color", - "value": { - "fixedColor": "orange", - "mode": "fixed" - } - } - ] - } - ] + } }, "gridPos": { "h": 7, @@ -10279,24 +10811,8 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", - "legendFormat": "{{workload}} - {{workload_type}}" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "scalar(max(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=~\"requests.cpu|cpu\"}))", - "legendFormat": "quota - requests" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "scalar(max(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=~\"limits.cpu\"}))", - "legendFormat": "quota - limits" + "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", + "legendFormat": "__auto" } ], "title": "CPU Usage", @@ -10324,31 +10840,19 @@ items: { "matcher": { "id": "byName", - "options": "Workload" + "options": "Pod" }, "properties": [ { "id": "links", "value": [ { - "title": "Drill down to workloads", - "url": "/d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-type=${__data.fields.Type}&var-workload=${__data.fields.Workload}" + "title": "Drill down to pods", + "url": "/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-pod=${__data.fields.Pod}" } ] } ] - }, - { - "matcher": { - "id": "byName", - "options": "Running Pods" - }, - "properties": [ - { - "id": "unit", - "value": "none" - } - ] } ] }, @@ -10366,16 +10870,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "count(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}) by (workload, workload_type)", - "format": "table", - "instant": true - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", "format": "table", "instant": true }, @@ -10384,7 +10879,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "expr": "sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", "format": "table", "instant": true }, @@ -10393,7 +10888,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n/sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", "format": "table", "instant": true }, @@ -10402,7 +10897,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "expr": "sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", "format": "table", "instant": true }, @@ -10411,7 +10906,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n/sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", "format": "table", "instant": true } @@ -10421,7 +10916,7 @@ items: { "id": "joinByField", "options": { - "byField": "workload", + "byField": "pod", "mode": "outer" } }, @@ -10434,13 +10929,7 @@ items: "Time 2": true, "Time 3": true, "Time 4": true, - "Time 5": true, - "Time 6": true, - "workload_type 2": true, - "workload_type 3": true, - "workload_type 4": true, - "workload_type 5": true, - "workload_type 6": true + "Time 5": true }, "indexByName": { "Time 1": 0, @@ -10448,30 +10937,20 @@ items: "Time 3": 2, "Time 4": 3, "Time 5": 4, - "Time 6": 5, - "Value #A": 8, - "Value #B": 9, - "Value #C": 10, - "Value #D": 11, - "Value #E": 12, - "Value #F": 13, - "workload": 6, - "workload_type 1": 7, - "workload_type 2": 14, - "workload_type 3": 15, - "workload_type 4": 16, - "workload_type 5": 17, - "workload_type 6": 18 + "Value #A": 6, + "Value #B": 7, + "Value #C": 8, + "Value #D": 9, + "Value #E": 10, + "pod": 5 }, "renameByName": { - "Value #A": "Running Pods", - "Value #B": "CPU Usage", - "Value #C": "CPU Requests", - "Value #D": "CPU Requests %", - "Value #E": "CPU Limits", - "Value #F": "CPU Limits %", - "workload": "Workload", - "workload_type 1": "Type" + "Value #A": "CPU Usage", + "Value #B": "CPU Requests", + "Value #C": "CPU Requests %", + "Value #D": "CPU Limits", + "Value #E": "CPU Limits %", + "pod": "Pod" } } } @@ -10491,59 +10970,7 @@ items: "spanNulls": true }, "unit": "bytes" - }, - "overrides": [ - { - "matcher": { - "id": "byFrameRefID", - "options": "B" - }, - "properties": [ - { - "id": "custom.lineStyle", - "value": { - "fill": "dash" - } - }, - { - "id": "custom.lineWidth", - "value": 2 - }, - { - "id": "color", - "value": { - "fixedColor": "red", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byFrameRefID", - "options": "C" - }, - "properties": [ - { - "id": "custom.lineStyle", - "value": { - "fill": "dash" - } - }, - { - "id": "custom.lineWidth", - "value": 2 - }, - { - "id": "color", - "value": { - "fixedColor": "orange", - "mode": "fixed" - } - } - ] - } - ] + } }, "gridPos": { "h": 7, @@ -10574,24 +11001,8 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n container_memory_working_set_bytes{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", - "legendFormat": "{{workload}} - {{workload_type}}" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "scalar(max(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=~\"requests.memory|memory\"}))", - "legendFormat": "quota - requests" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "scalar(max(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=~\"limits.memory\"}))", - "legendFormat": "quota - limits" + "expr": "sum(\n container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", + "legendFormat": "__auto" } ], "title": "Memory Usage", @@ -10622,31 +11033,19 @@ items: { "matcher": { "id": "byName", - "options": "Workload" + "options": "Pod" }, "properties": [ { "id": "links", "value": [ { - "title": "Drill down to workloads", - "url": "/d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-type=${__data.fields.Type}&var-workload=${__data.fields.Workload}" + "title": "Drill down to pods", + "url": "/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-pod=${__data.fields.Pod}" } ] } ] - }, - { - "matcher": { - "id": "byName", - "options": "Running Pods" - }, - "properties": [ - { - "id": "unit", - "value": "none" - } - ] } ] }, @@ -10664,16 +11063,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "count(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}) by (workload, workload_type)", - "format": "table", - "instant": true - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "sum(\n container_memory_working_set_bytes{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "expr": "sum(\n container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", "format": "table", "instant": true }, @@ -10682,7 +11072,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "expr": "sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", "format": "table", "instant": true }, @@ -10691,7 +11081,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n container_memory_working_set_bytes{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "expr": "sum(\n container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n/sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", "format": "table", "instant": true }, @@ -10700,7 +11090,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "expr": "sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", "format": "table", "instant": true }, @@ -10709,7 +11099,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "sum(\n container_memory_working_set_bytes{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "expr": "sum(\n container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n/sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n", "format": "table", "instant": true } @@ -10719,7 +11109,7 @@ items: { "id": "joinByField", "options": { - "byField": "workload", + "byField": "pod", "mode": "outer" } }, @@ -10732,13 +11122,7 @@ items: "Time 2": true, "Time 3": true, "Time 4": true, - "Time 5": true, - "Time 6": true, - "workload_type 2": true, - "workload_type 3": true, - "workload_type 4": true, - "workload_type 5": true, - "workload_type 6": true + "Time 5": true }, "indexByName": { "Time 1": 0, @@ -10746,30 +11130,20 @@ items: "Time 3": 2, "Time 4": 3, "Time 5": 4, - "Time 6": 5, - "Value #A": 8, - "Value #B": 9, - "Value #C": 10, - "Value #D": 11, - "Value #E": 12, - "Value #F": 13, - "workload": 6, - "workload_type 1": 7, - "workload_type 2": 14, - "workload_type 3": 15, - "workload_type 4": 16, - "workload_type 5": 17, - "workload_type 6": 18 + "Value #A": 9, + "Value #B": 10, + "Value #C": 11, + "Value #D": 12, + "Value #E": 13, + "pod": 8 }, "renameByName": { - "Value #A": "Running Pods", - "Value #B": "Memory Usage", - "Value #C": "Memory Requests", - "Value #D": "Memory Requests %", - "Value #E": "Memory Limits", - "Value #F": "Memory Limits %", - "workload": "Workload", - "workload_type 1": "Type" + "Value #A": "Memory Usage", + "Value #B": "Memory Requests", + "Value #C": "Memory Requests %", + "Value #D": "Memory Limits", + "Value #E": "Memory Limits %", + "pod": "Pod" } } } @@ -10810,15 +11184,15 @@ items: { "matcher": { "id": "byName", - "options": "Workload" + "options": "Pod" }, "properties": [ { "id": "links", "value": [ { - "title": "Drill down to workloads", - "url": "/d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-type=${__data.fields.Type}&var-workload=${__data.fields.Workload}" + "title": "Drill down to pods", + "url": "/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-pod=${__data.fields.Pod}" } ] } @@ -10840,7 +11214,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_receive_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}) by (workload))\n", + "expr": "(sum(rate(container_network_receive_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", "format": "table", "instant": true }, @@ -10849,7 +11223,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_transmit_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}) by (workload))\n", + "expr": "(sum(rate(container_network_transmit_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", "format": "table", "instant": true }, @@ -10858,7 +11232,7 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_receive_packets_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}) by (workload))\n", + "expr": "(sum(rate(container_network_receive_packets_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", "format": "table", "instant": true }, @@ -10867,7 +11241,16 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_transmit_packets_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}) by (workload))\n", + "expr": "(sum(rate(container_network_transmit_packets_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(sum(rate(container_network_receive_packets_dropped_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", "format": "table", "instant": true }, @@ -10876,69 +11259,2348 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_receive_packets_dropped_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}) by (workload))\n", - "format": "table", - "instant": true + "expr": "(sum(rate(container_network_transmit_packets_dropped_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", + "format": "table", + "instant": true + } + ], + "title": "Current Network Usage", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "pod", + "mode": "outer" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Time 1": true, + "Time 2": true, + "Time 3": true, + "Time 4": true, + "Time 5": true, + "Time 6": true + }, + "indexByName": { + "Time 1": 0, + "Time 2": 1, + "Time 3": 2, + "Time 4": 3, + "Time 5": 4, + "Time 6": 5, + "Value #A": 7, + "Value #B": 8, + "Value #C": 9, + "Value #D": 10, + "Value #E": 11, + "Value #F": 12, + "pod": 6 + }, + "renameByName": { + "Value #A": "Current Receive Bandwidth", + "Value #B": "Current Transmit Bandwidth", + "Value #C": "Rate of Received Packets", + "Value #D": "Rate of Transmitted Packets", + "Value #E": "Rate of Received Packets Dropped", + "Value #F": "Rate of Transmitted Packets Dropped", + "pod": "Pod" + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "Bps" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 35 + }, + "id": 6, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(sum(rate(container_network_receive_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", + "legendFormat": "__auto" + } + ], + "title": "Receive Bandwidth", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "Bps" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 35 + }, + "id": 7, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(sum(rate(container_network_transmit_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", + "legendFormat": "__auto" + } + ], + "title": "Transmit Bandwidth", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "Bps" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 42 + }, + "id": 8, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(avg(rate(container_network_receive_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", + "legendFormat": "__auto" + } + ], + "title": "Average Container Bandwidth by Pod: Received", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "Bps" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 42 + }, + "id": 9, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(avg(rate(container_network_transmit_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", + "legendFormat": "__auto" + } + ], + "title": "Average Container Bandwidth by Pod: Transmitted", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "pps" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 49 + }, + "id": 10, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(sum(rate(container_network_receive_packets_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", + "legendFormat": "__auto" + } + ], + "title": "Rate of Received Packets", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "pps" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 49 + }, + "id": 11, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(sum(rate(container_network_transmit_packets_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", + "legendFormat": "__auto" + } + ], + "title": "Rate of Transmitted Packets", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "pps" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 56 + }, + "id": 12, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(sum(rate(container_network_receive_packets_dropped_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", + "legendFormat": "__auto" + } + ], + "title": "Rate of Received Packets Dropped", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "pps" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 56 + }, + "id": 13, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(sum(rate(container_network_transmit_packets_dropped_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\"$workload\", workload_type=~\"$type\"}) by (pod))\n", + "legendFormat": "__auto" + } + ], + "title": "Rate of Transmitted Packets Dropped", + "type": "timeseries" + } + ], + "refresh": "10s", + "schemaVersion": 39, + "tags": [ + "kubernetes-mixin" + ], + "templating": { + "list": [ + { + "current": { + "selected": true, + "text": "default", + "value": "default" + }, + "hide": 0, + "label": "Data source", + "name": "datasource", + "query": "prometheus", + "regex": "", + "type": "datasource" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "hide": 0, + "label": "cluster", + "name": "cluster", + "query": "label_values(up{job=\"kube-state-metrics\"}, cluster)", + "refresh": 2, + "sort": 1, + "type": "query" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "hide": 0, + "label": "namespace", + "name": "namespace", + "query": "label_values(kube_namespace_status_phase{job=\"kube-state-metrics\", cluster=\"$cluster\"}, namespace)", + "refresh": 2, + "sort": 1, + "type": "query" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "hide": 0, + "includeAll": true, + "label": "workload_type", + "name": "type", + "query": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\"}, workload_type)", + "refresh": 2, + "sort": 1, + "type": "query" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "hide": 0, + "label": "workload", + "name": "workload", + "query": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}, workload)", + "refresh": 2, + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timezone": "UTC", + "title": "Kubernetes / Compute Resources / Workload", + "uid": "a164a7f0339f99e89cea5cb47e9be617" + } + kind: ConfigMap + metadata: + labels: + app.kubernetes.io/component: grafana + app.kubernetes.io/name: grafana + app.kubernetes.io/part-of: kube-prometheus + app.kubernetes.io/version: 11.5.1 + name: grafana-dashboard-k8s-resources-workload + namespace: monitoring +- apiVersion: v1 + data: + k8s-resources-workloads-namespace.json: |- + { + "editable": false, + "links": [ + { + "asDropdown": true, + "includeVars": true, + "keepTime": true, + "tags": [ + "kubernetes-mixin" + ], + "targetBlank": false, + "title": "Kubernetes", + "type": "dashboards" + } + ], + "panels": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + } + }, + "overrides": [ + { + "matcher": { + "id": "byFrameRefID", + "options": "B" + }, + "properties": [ + { + "id": "custom.lineStyle", + "value": { + "fill": "dash" + } + }, + { + "id": "custom.lineWidth", + "value": 2 + }, + { + "id": "color", + "value": { + "fixedColor": "red", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byFrameRefID", + "options": "C" + }, + "properties": [ + { + "id": "custom.lineStyle", + "value": { + "fill": "dash" + } + }, + { + "id": "custom.lineWidth", + "value": 2 + }, + { + "id": "color", + "value": { + "fixedColor": "orange", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "legendFormat": "{{workload}} - {{workload_type}}" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "scalar(max(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=~\"requests.cpu|cpu\"}))", + "legendFormat": "quota - requests" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "scalar(max(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=~\"limits.cpu\"}))", + "legendFormat": "quota - limits" + } + ], + "title": "CPU Usage", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/%/" + }, + "properties": [ + { + "id": "unit", + "value": "percentunit" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Workload" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "title": "Drill down to workloads", + "url": "/d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-type=${__data.fields.Type}&var-workload=${__data.fields.Workload}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Running Pods" + }, + "properties": [ + { + "id": "unit", + "value": "none" + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 7 + }, + "id": 2, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "count(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}) by (workload, workload_type)", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "format": "table", + "instant": true + } + ], + "title": "CPU Quota", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "workload", + "mode": "outer" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Time 1": true, + "Time 2": true, + "Time 3": true, + "Time 4": true, + "Time 5": true, + "Time 6": true, + "workload_type 2": true, + "workload_type 3": true, + "workload_type 4": true, + "workload_type 5": true, + "workload_type 6": true + }, + "indexByName": { + "Time 1": 0, + "Time 2": 1, + "Time 3": 2, + "Time 4": 3, + "Time 5": 4, + "Time 6": 5, + "Value #A": 8, + "Value #B": 9, + "Value #C": 10, + "Value #D": 11, + "Value #E": 12, + "Value #F": 13, + "workload": 6, + "workload_type 1": 7, + "workload_type 2": 14, + "workload_type 3": 15, + "workload_type 4": 16, + "workload_type 5": 17, + "workload_type 6": 18 + }, + "renameByName": { + "Value #A": "Running Pods", + "Value #B": "CPU Usage", + "Value #C": "CPU Requests", + "Value #D": "CPU Requests %", + "Value #E": "CPU Limits", + "Value #F": "CPU Limits %", + "workload": "Workload", + "workload_type 1": "Type" + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byFrameRefID", + "options": "B" + }, + "properties": [ + { + "id": "custom.lineStyle", + "value": { + "fill": "dash" + } + }, + { + "id": "custom.lineWidth", + "value": 2 + }, + { + "id": "color", + "value": { + "fixedColor": "red", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byFrameRefID", + "options": "C" + }, + "properties": [ + { + "id": "custom.lineStyle", + "value": { + "fill": "dash" + } + }, + { + "id": "custom.lineWidth", + "value": 2 + }, + { + "id": "color", + "value": { + "fixedColor": "orange", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 14 + }, + "id": 3, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(\n container_memory_working_set_bytes{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "legendFormat": "{{workload}} - {{workload_type}}" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "scalar(max(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=~\"requests.memory|memory\"}))", + "legendFormat": "quota - requests" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "scalar(max(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=~\"limits.memory\"}))", + "legendFormat": "quota - limits" + } + ], + "title": "Memory Usage", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/%/" + }, + "properties": [ + { + "id": "unit", + "value": "percentunit" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Workload" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "title": "Drill down to workloads", + "url": "/d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-type=${__data.fields.Type}&var-workload=${__data.fields.Workload}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Running Pods" + }, + "properties": [ + { + "id": "unit", + "value": "none" + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 21 + }, + "id": 4, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "count(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}) by (workload, workload_type)", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(\n container_memory_working_set_bytes{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(\n container_memory_working_set_bytes{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(\n container_memory_working_set_bytes{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n", + "format": "table", + "instant": true + } + ], + "title": "Memory Quota", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "workload", + "mode": "outer" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Time 1": true, + "Time 2": true, + "Time 3": true, + "Time 4": true, + "Time 5": true, + "Time 6": true, + "workload_type 2": true, + "workload_type 3": true, + "workload_type 4": true, + "workload_type 5": true, + "workload_type 6": true + }, + "indexByName": { + "Time 1": 0, + "Time 2": 1, + "Time 3": 2, + "Time 4": 3, + "Time 5": 4, + "Time 6": 5, + "Value #A": 8, + "Value #B": 9, + "Value #C": 10, + "Value #D": 11, + "Value #E": 12, + "Value #F": 13, + "workload": 6, + "workload_type 1": 7, + "workload_type 2": 14, + "workload_type 3": 15, + "workload_type 4": 16, + "workload_type 5": 17, + "workload_type 6": 18 + }, + "renameByName": { + "Value #A": "Running Pods", + "Value #B": "Memory Usage", + "Value #C": "Memory Requests", + "Value #D": "Memory Requests %", + "Value #E": "Memory Limits", + "Value #F": "Memory Limits %", + "workload": "Workload", + "workload_type 1": "Type" + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/Bandwidth/" + }, + "properties": [ + { + "id": "unit", + "value": "Bps" + } + ] + }, + { + "matcher": { + "id": "byRegexp", + "options": "/Packets/" + }, + "properties": [ + { + "id": "unit", + "value": "pps" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Workload" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "title": "Drill down to workloads", + "url": "/d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?${datasource:queryparam}&var-cluster=$cluster&var-namespace=$namespace&var-type=${__data.fields.Type}&var-workload=${__data.fields.Workload}" + } + ] + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 28 + }, + "id": 5, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(sum(rate(container_network_receive_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}) by (workload))\n", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(sum(rate(container_network_transmit_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}) by (workload))\n", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(sum(rate(container_network_receive_packets_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}) by (workload))\n", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(sum(rate(container_network_transmit_packets_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}) by (workload))\n", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(sum(rate(container_network_receive_packets_dropped_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}) by (workload))\n", + "format": "table", + "instant": true + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(sum(rate(container_network_transmit_packets_dropped_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}) by (workload))\n", + "format": "table", + "instant": true + } + ], + "title": "Current Network Usage", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "workload", + "mode": "outer" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Time 1": true, + "Time 2": true, + "Time 3": true, + "Time 4": true, + "Time 5": true, + "Time 6": true + }, + "indexByName": { + "Time 1": 0, + "Time 2": 1, + "Time 3": 2, + "Time 4": 3, + "Time 5": 4, + "Time 6": 5, + "Value #A": 7, + "Value #B": 8, + "Value #C": 9, + "Value #D": 10, + "Value #E": 11, + "Value #F": 12, + "workload": 6 + }, + "renameByName": { + "Value #A": "Current Receive Bandwidth", + "Value #B": "Current Transmit Bandwidth", + "Value #C": "Rate of Received Packets", + "Value #D": "Rate of Transmitted Packets", + "Value #E": "Rate of Received Packets Dropped", + "Value #F": "Rate of Transmitted Packets Dropped", + "workload": "Workload" + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "Bps" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 35 + }, + "id": 6, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(sum(rate(container_network_receive_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\", workload_type=~\"$type\"}) by (workload))\n", + "legendFormat": "__auto" + } + ], + "title": "Receive Bandwidth", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "Bps" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 35 + }, + "id": 7, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(sum(rate(container_network_transmit_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\", workload_type=~\"$type\"}) by (workload))\n", + "legendFormat": "__auto" + } + ], + "title": "Transmit Bandwidth", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "Bps" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 42 + }, + "id": 8, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(avg(rate(container_network_receive_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\", workload_type=~\"$type\"}) by (workload))\n", + "legendFormat": "__auto" + } + ], + "title": "Average Container Bandwidth by Workload: Received", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "Bps" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 42 + }, + "id": 9, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(avg(rate(container_network_transmit_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\", workload_type=~\"$type\"}) by (workload))\n", + "legendFormat": "__auto" + } + ], + "title": "Average Container Bandwidth by Workload: Transmitted", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "pps" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 49 + }, + "id": 10, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(sum(rate(container_network_receive_packets_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\", workload_type=~\"$type\"}) by (workload))\n", + "legendFormat": "__auto" + } + ], + "title": "Rate of Received Packets", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "pps" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 49 + }, + "id": 11, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(sum(rate(container_network_transmit_packets_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\", workload_type=~\"$type\"}) by (workload))\n", + "legendFormat": "__auto" + } + ], + "title": "Rate of Transmitted Packets", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "pps" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 56 + }, + "id": 12, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(sum(rate(container_network_receive_packets_dropped_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\", workload_type=~\"$type\"}) by (workload))\n", + "legendFormat": "__auto" + } + ], + "title": "Rate of Received Packets Dropped", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "pps" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 56 + }, + "id": 13, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "(sum(rate(container_network_transmit_packets_dropped_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\", workload_type=~\"$type\"}) by (workload))\n", + "legendFormat": "__auto" + } + ], + "title": "Rate of Transmitted Packets Dropped", + "type": "timeseries" + } + ], + "refresh": "10s", + "schemaVersion": 39, + "tags": [ + "kubernetes-mixin" + ], + "templating": { + "list": [ + { + "current": { + "selected": true, + "text": "default", + "value": "default" + }, + "hide": 0, + "label": "Data source", + "name": "datasource", + "query": "prometheus", + "regex": "", + "type": "datasource" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "hide": 0, + "label": "cluster", + "name": "cluster", + "query": "label_values(up{job=\"kube-state-metrics\"}, cluster)", + "refresh": 2, + "sort": 1, + "type": "query" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "hide": 0, + "label": "namespace", + "name": "namespace", + "query": "label_values(kube_namespace_status_phase{job=\"kube-state-metrics\", cluster=\"$cluster\"}, namespace)", + "refresh": 2, + "sort": 1, + "type": "query" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "hide": 0, + "includeAll": true, + "label": "workload_type", + "name": "type", + "query": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\"}, workload_type)", + "refresh": 2, + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timezone": "UTC", + "title": "Kubernetes / Compute Resources / Namespace (Workloads)", + "uid": "a87fb0d919ec0ea5f6543124e16c42a5" + } + kind: ConfigMap + metadata: + labels: + app.kubernetes.io/component: grafana + app.kubernetes.io/name: grafana + app.kubernetes.io/part-of: kube-prometheus + app.kubernetes.io/version: 11.5.1 + name: grafana-dashboard-k8s-resources-workloads-namespace + namespace: monitoring +- apiVersion: v1 + data: + k8s-windows-cluster-rsrc-use.json: |- + { + "editable": false, + "panels": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "percentunit" + } + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "node:windows_node_cpu_utilisation:avg1m{cluster=\"$cluster\"} * node:windows_node_num_cpu:sum{cluster=\"$cluster\"} / scalar(sum(node:windows_node_num_cpu:sum{cluster=\"$cluster\"}))", + "legendFormat": "{{instance}}" + } + ], + "title": "CPU Utilisation", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "percentunit" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 7 + }, + "id": 2, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "node:windows_node_memory_utilisation:ratio{cluster=\"$cluster\"}", + "legendFormat": "{{instance}}" + } + ], + "title": "Memory Utilisation", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "short" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 7 + }, + "id": 3, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "node:windows_node_memory_swap_io_pages:irate{cluster=\"$cluster\"}", + "legendFormat": "{{instance}}" + } + ], + "title": "Memory Saturation (Swap I/O Pages)", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "percentunit" + } + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 14 + }, + "id": 4, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "node:windows_node_disk_utilisation:avg_irate{cluster=\"$cluster\"} / scalar(node:windows_node:sum{cluster=\"$cluster\"})", + "legendFormat": "{{instance}}" + } + ], + "title": "Disk IO Utilisation", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "Bps" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 21 + }, + "id": 5, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "node:windows_node_net_utilisation:sum_irate{cluster=\"$cluster\"}", + "legendFormat": "{{instance}}" + } + ], + "title": "Net Utilisation (Transmitted)", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "Bps" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 21 + }, + "id": 6, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "node:windows_node_net_saturation:sum_irate{cluster=\"$cluster\"}", + "legendFormat": "{{instance}}" + } + ], + "title": "Net Utilisation (Dropped)", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "percentunit" + } + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 28 + }, + "id": 7, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum by (instance)(node:windows_node_filesystem_usage:{cluster=\"$cluster\"})", + "legendFormat": "{{instance}}" + } + ], + "title": "Disk Capacity", + "type": "timeseries" + } + ], + "refresh": "10s", + "schemaVersion": 39, + "tags": [ + "kubernetes-mixin" + ], + "templating": { + "list": [ + { + "current": { + "selected": true, + "text": "default", + "value": "default" + }, + "hide": 0, + "label": "Data source", + "name": "datasource", + "query": "prometheus", + "regex": "", + "type": "datasource" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "hide": 0, + "label": "cluster", + "name": "cluster", + "query": "label_values(up{job=\"kubernetes-windows-exporter\"}, cluster)", + "refresh": 2, + "sort": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timezone": "utc", + "title": "Kubernetes / USE Method / Cluster(Windows)", + "uid": "53a43377ec9aaf2ff64dfc7a1f539334" + } + kind: ConfigMap + metadata: + labels: + app.kubernetes.io/component: grafana + app.kubernetes.io/name: grafana + app.kubernetes.io/part-of: kube-prometheus + app.kubernetes.io/version: 11.5.1 + name: grafana-dashboard-k8s-windows-cluster-rsrc-use + namespace: monitoring +- apiVersion: v1 + data: + k8s-windows-node-rsrc-use.json: |- + { + "editable": false, + "panels": [ + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "percentunit" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 0 + }, + "id": 1, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "node:windows_node_cpu_utilisation:avg1m{cluster=\"$cluster\", instance=\"$instance\"}", + "legendFormat": "Utilisation" + } + ], + "title": "CPU Utilisation", + "type": "timeseries" + }, + { + "datasource": { + "type": "datasource", + "uid": "-- Mixed --" + }, + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "unit": "percentunit" + } + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 2, + "interval": "1m", + "options": { + "legend": { + "asTable": true, + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "v11.4.0", + "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_transmit_packets_dropped_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}) by (workload))\n", - "format": "table", - "instant": true - } - ], - "title": "Current Network Usage", - "transformations": [ - { - "id": "joinByField", - "options": { - "byField": "workload", - "mode": "outer" - } - }, - { - "id": "organize", - "options": { - "excludeByName": { - "Time": true, - "Time 1": true, - "Time 2": true, - "Time 3": true, - "Time 4": true, - "Time 5": true, - "Time 6": true - }, - "indexByName": { - "Time 1": 0, - "Time 2": 1, - "Time 3": 2, - "Time 4": 3, - "Time 5": 4, - "Time 6": 5, - "Value #A": 7, - "Value #B": 8, - "Value #C": 9, - "Value #D": 10, - "Value #E": 11, - "Value #F": 12, - "workload": 6 - }, - "renameByName": { - "Value #A": "Current Receive Bandwidth", - "Value #B": "Current Transmit Bandwidth", - "Value #C": "Rate of Received Packets", - "Value #D": "Rate of Transmitted Packets", - "Value #E": "Rate of Received Packets Dropped", - "Value #F": "Rate of Transmitted Packets Dropped", - "workload": "Workload" - } - } + "expr": "sum by (core) (irate(windows_cpu_time_total{cluster=\"$cluster\", job=\"kubernetes-windows-exporter\", mode!=\"idle\", instance=\"$instance\"}[$__rate_interval]))", + "legendFormat": "{{core}}" } ], - "type": "table" + "title": "CPU Usage Per Core", + "type": "timeseries" }, { "datasource": { @@ -10952,16 +13614,16 @@ items: "showPoints": "never", "spanNulls": true }, - "unit": "Bps" + "unit": "percentunit" } }, "gridPos": { "h": 7, - "w": 12, + "w": 8, "x": 0, - "y": 35 + "y": 7 }, - "id": 6, + "id": 3, "interval": "1m", "options": { "legend": { @@ -10984,11 +13646,11 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_receive_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\", workload_type=~\"$type\"}) by (workload))\n", - "legendFormat": "__auto" + "expr": "node:windows_node_memory_utilisation:{cluster=\"$cluster\", instance=\"$instance\"}", + "legendFormat": "Memory" } ], - "title": "Receive Bandwidth", + "title": "Memory Utilisation %", "type": "timeseries" }, { @@ -11003,16 +13665,16 @@ items: "showPoints": "never", "spanNulls": true }, - "unit": "Bps" + "unit": "bytes" } }, "gridPos": { "h": 7, - "w": 12, - "x": 12, - "y": 35 + "w": 8, + "x": 8, + "y": 7 }, - "id": 7, + "id": 4, "interval": "1m", "options": { "legend": { @@ -11035,11 +13697,27 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_transmit_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\", workload_type=~\"$type\"}) by (workload))\n", - "legendFormat": "__auto" + "expr": "max(\n windows_os_visible_memory_bytes{cluster=\"$cluster\", job=\"kubernetes-windows-exporter\", instance=\"$instance\"}\n - windows_memory_available_bytes{cluster=\"$cluster\", job=\"kubernetes-windows-exporter\", instance=\"$instance\"}\n)\n", + "legendFormat": "memory used" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "max(node:windows_node_memory_totalCached_bytes:sum{cluster=\"$cluster\", instance=\"$instance\"})", + "legendFormat": "memory cached" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "max(windows_memory_available_bytes{cluster=\"$cluster\", job=\"kubernetes-windows-exporter\", instance=\"$instance\"})", + "legendFormat": "memory free" } ], - "title": "Transmit Bandwidth", + "title": "Memory Usage", "type": "timeseries" }, { @@ -11054,16 +13732,16 @@ items: "showPoints": "never", "spanNulls": true }, - "unit": "Bps" + "unit": "short" } }, "gridPos": { "h": 7, - "w": 12, - "x": 0, - "y": 42 + "w": 8, + "x": 16, + "y": 7 }, - "id": 8, + "id": 5, "interval": "1m", "options": { "legend": { @@ -11086,11 +13764,11 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(avg(rate(container_network_receive_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\", workload_type=~\"$type\"}) by (workload))\n", - "legendFormat": "__auto" + "expr": "node:windows_node_memory_swap_io_pages:irate{cluster=\"$cluster\", instance=\"$instance\"}", + "legendFormat": "Swap IO" } ], - "title": "Average Container Bandwidth by Workload: Received", + "title": "Memory Saturation (Swap I/O) Pages", "type": "timeseries" }, { @@ -11105,16 +13783,16 @@ items: "showPoints": "never", "spanNulls": true }, - "unit": "Bps" + "unit": "percentunit" } }, "gridPos": { "h": 7, "w": 12, - "x": 12, - "y": 42 + "x": 0, + "y": 14 }, - "id": 9, + "id": 6, "interval": "1m", "options": { "legend": { @@ -11137,11 +13815,11 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(avg(rate(container_network_transmit_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\", workload_type=~\"$type\"}) by (workload))\n", - "legendFormat": "__auto" + "expr": "node:windows_node_disk_utilisation:avg_irate{cluster=\"$cluster\", instance=\"$instance\"}", + "legendFormat": "Utilisation" } ], - "title": "Average Container Bandwidth by Workload: Transmitted", + "title": "Disk IO Utilisation", "type": "timeseries" }, { @@ -11156,16 +13834,30 @@ items: "showPoints": "never", "spanNulls": true }, - "unit": "pps" - } + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": "/io time/" + }, + "properties": [ + { + "id": "unit", + "value": "ms" + } + ] + } + ] }, "gridPos": { "h": 7, "w": 12, - "x": 0, - "y": 49 + "x": 12, + "y": 14 }, - "id": 10, + "id": 7, "interval": "1m", "options": { "legend": { @@ -11188,11 +13880,27 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_receive_packets_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\", workload_type=~\"$type\"}) by (workload))\n", - "legendFormat": "__auto" + "expr": "max(rate(windows_logical_disk_read_bytes_total{cluster=\"$cluster\", job=\"kubernetes-windows-exporter\", instance=\"$instance\"}[$__rate_interval]))", + "legendFormat": "read" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "max(rate(windows_logical_disk_write_bytes_total{cluster=\"$cluster\", job=\"kubernetes-windows-exporter\", instance=\"$instance\"}[$__rate_interval]))", + "legendFormat": "written" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "max(rate(windows_logical_disk_read_seconds_total{cluster=\"$cluster\", job=\"kubernetes-windows-exporter\", instance=\"$instance\"}[$__rate_interval]) + rate(windows_logical_disk_write_seconds_total{cluster=\"$cluster\", job=\"kubernetes-windows-exporter\", instance=\"$instance\"}[$__rate_interval]))", + "legendFormat": "io time" } ], - "title": "Rate of Received Packets", + "title": "Disk IO", "type": "timeseries" }, { @@ -11207,16 +13915,16 @@ items: "showPoints": "never", "spanNulls": true }, - "unit": "pps" + "unit": "percentunit" } }, "gridPos": { "h": 7, - "w": 12, - "x": 12, - "y": 49 + "w": 24, + "x": 0, + "y": 21 }, - "id": 11, + "id": 8, "interval": "1m", "options": { "legend": { @@ -11239,11 +13947,11 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_transmit_packets_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\", workload_type=~\"$type\"}) by (workload))\n", - "legendFormat": "__auto" + "expr": "node:windows_node_filesystem_usage:{cluster=\"$cluster\", instance=\"$instance\"}", + "legendFormat": "{{volume}}" } ], - "title": "Rate of Transmitted Packets", + "title": "Disk Utilisation", "type": "timeseries" }, { @@ -11258,16 +13966,16 @@ items: "showPoints": "never", "spanNulls": true }, - "unit": "pps" + "unit": "Bps" } }, "gridPos": { "h": 7, "w": 12, "x": 0, - "y": 56 + "y": 28 }, - "id": 12, + "id": 9, "interval": "1m", "options": { "legend": { @@ -11290,11 +13998,11 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_receive_packets_dropped_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\", workload_type=~\"$type\"}) by (workload))\n", - "legendFormat": "__auto" + "expr": "node:windows_node_net_utilisation:sum_irate{cluster=\"$cluster\", instance=\"$instance\"}", + "legendFormat": "Utilisation" } ], - "title": "Rate of Received Packets Dropped", + "title": "Net Utilisation (Transmitted)", "type": "timeseries" }, { @@ -11309,16 +14017,16 @@ items: "showPoints": "never", "spanNulls": true }, - "unit": "pps" + "unit": "Bps" } }, "gridPos": { "h": 7, "w": 12, "x": 12, - "y": 56 + "y": 28 }, - "id": 13, + "id": 10, "interval": "1m", "options": { "legend": { @@ -11341,11 +14049,11 @@ items: "type": "prometheus", "uid": "${datasource}" }, - "expr": "(sum(rate(container_network_transmit_packets_dropped_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\", workload_type=~\"$type\"}) by (workload))\n", - "legendFormat": "__auto" + "expr": "node:windows_node_net_saturation:sum_irate{cluster=\"$cluster\", instance=\"$instance\"}", + "legendFormat": "Saturation" } ], - "title": "Rate of Transmitted Packets Dropped", + "title": "Net Saturation (Dropped)", "type": "timeseries" } ], @@ -11377,20 +14085,7 @@ items: "hide": 0, "label": "cluster", "name": "cluster", - "query": "label_values(up{job=\"kube-state-metrics\"}, cluster)", - "refresh": 2, - "sort": 1, - "type": "query" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "hide": 0, - "label": "namespace", - "name": "namespace", - "query": "label_values(kube_namespace_status_phase{job=\"kube-state-metrics\", cluster=\"$cluster\"}, namespace)", + "query": "label_values(up{job=\"kubernetes-windows-exporter\"}, cluster)", "refresh": 2, "sort": 1, "type": "query" @@ -11401,12 +14096,10 @@ items: "uid": "${datasource}" }, "hide": 0, - "includeAll": true, - "label": "workload_type", - "name": "type", - "query": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\"}, workload_type)", + "label": "instance", + "name": "instance", + "query": "label_values(windows_system_system_up_time{cluster=\"$cluster\"}, instance)", "refresh": 2, - "sort": 1, "type": "query" } ] @@ -11415,9 +14108,9 @@ items: "from": "now-1h", "to": "now" }, - "timezone": "UTC", - "title": "Kubernetes / Compute Resources / Namespace (Workloads)", - "uid": "a87fb0d919ec0ea5f6543124e16c42a5" + "timezone": "utc", + "title": "Kubernetes / USE Method / Node(Windows)", + "uid": "96e7484b0bb53b74fbc2bcb7723cd40b" } kind: ConfigMap metadata: @@ -11425,8 +14118,8 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 - name: grafana-dashboard-k8s-resources-workloads-namespace + app.kubernetes.io/version: 11.5.1 + name: grafana-dashboard-k8s-windows-node-rsrc-use namespace: monitoring - apiVersion: v1 data: @@ -12678,7 +15371,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-kubelet namespace: monitoring - apiVersion: v1 @@ -13316,7 +16009,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-namespace-by-pod namespace: monitoring - apiVersion: v1 @@ -14112,7 +16805,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-namespace-by-workload namespace: monitoring - apiVersion: v1 @@ -14713,7 +17406,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-node-cluster-rsrc-use namespace: monitoring - apiVersion: v1 @@ -15317,7 +18010,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-node-rsrc-use namespace: monitoring - apiVersion: v1 @@ -16040,7 +18733,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-nodes-aix namespace: monitoring - apiVersion: v1 @@ -16787,7 +19480,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-nodes-darwin namespace: monitoring - apiVersion: v1 @@ -17526,7 +20219,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-nodes namespace: monitoring - apiVersion: v1 @@ -17848,7 +20541,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-persistentvolumesusage namespace: monitoring - apiVersion: v1 @@ -18340,7 +21033,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-pod-total namespace: monitoring - apiVersion: v1 @@ -18399,7 +21092,7 @@ items: "expr": "(\n prometheus_remote_storage_highest_timestamp_in_seconds{cluster=~\"$cluster\", instance=~\"$instance\"}\n-\n ignoring(remote_name, url) group_right(instance) (prometheus_remote_storage_queue_highest_sent_timestamp_seconds{cluster=~\"$cluster\", instance=~\"$instance\", url=~\"$url\"} != 0)\n)\n", "format": "time_series", "intervalFactor": 2, - "legendFormat": "{{cluster}}:{{instance}} {{remote_name}}:{{url}}" + "legendFormat": "{{cluster}}::{{instance}} {{remote_name}}:{{url}}" } ], "title": "Highest Timestamp In vs. Highest Timestamp Sent", @@ -18639,7 +21332,7 @@ items: "expr": "prometheus_remote_storage_shards_min{cluster=~\"$cluster\", instance=~\"$instance\", url=~\"$url\"}", "format": "time_series", "intervalFactor": 2, - "legendFormat": "{{cluster}}:{{instance}} {{remote_name}}:{{url}}" + "legendFormat": "{{cluster}}{{instance}} {{remote_name}}:{{url}}" } ], "title": "Min Shards", @@ -19141,7 +21834,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-prometheus-remote-write namespace: monitoring - apiVersion: v1 @@ -19980,7 +22673,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-prometheus namespace: monitoring - apiVersion: v1 @@ -20635,7 +23328,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-proxy namespace: monitoring - apiVersion: v1 @@ -21236,7 +23929,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-scheduler namespace: monitoring - apiVersion: v1 @@ -21818,7 +24511,7 @@ items: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboard-workload-total namespace: monitoring kind: ConfigMapList diff --git a/manifests/grafana-dashboardSources.yaml b/manifests/grafana-dashboardSources.yaml index f8ae4cdffa69815557f235a5afe2eb428207f3cb..aaf2c217c7777435c146670a5ef283ca94daf100 100644 --- a/manifests/grafana-dashboardSources.yaml +++ b/manifests/grafana-dashboardSources.yaml @@ -22,6 +22,6 @@ metadata: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana-dashboards namespace: monitoring diff --git a/manifests/grafana-deployment.yaml b/manifests/grafana-deployment.yaml index 0543208729633ee6517374aace40b723d59530aa..3cc25a657261990e9720f3cc014f9a569de815b7 100644 --- a/manifests/grafana-deployment.yaml +++ b/manifests/grafana-deployment.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana namespace: monitoring spec: @@ -18,19 +18,19 @@ spec: template: metadata: annotations: - checksum/grafana-config: aebc3bc49354ecacc50b923ebe2addff - checksum/grafana-dashboardproviders: 4841997124c2ee1be47e38f6655d697e - checksum/grafana-datasources: 4fa6738677cddb088390c9176797973d + checksum/grafana-config: 953113b2ca22381f7082ce439be533d0 + checksum/grafana-dashboardproviders: df57a8a4997b4a3232e040de94e143dd + checksum/grafana-datasources: 8da6755cca0c93eeec2eda48ab474339 labels: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 spec: automountServiceAccountToken: false containers: - env: [] - image: grafana/grafana:11.5.0 + image: grafana/grafana:11.5.1 name: grafana ports: - containerPort: 3000 @@ -97,12 +97,27 @@ spec: - mountPath: /grafana-dashboard-definitions/0/k8s-resources-pod name: grafana-dashboard-k8s-resources-pod readOnly: false + - mountPath: /grafana-dashboard-definitions/0/k8s-resources-windows-cluster + name: grafana-dashboard-k8s-resources-windows-cluster + readOnly: false + - mountPath: /grafana-dashboard-definitions/0/k8s-resources-windows-namespace + name: grafana-dashboard-k8s-resources-windows-namespace + readOnly: false + - mountPath: /grafana-dashboard-definitions/0/k8s-resources-windows-pod + name: grafana-dashboard-k8s-resources-windows-pod + readOnly: false - mountPath: /grafana-dashboard-definitions/0/k8s-resources-workload name: grafana-dashboard-k8s-resources-workload readOnly: false - mountPath: /grafana-dashboard-definitions/0/k8s-resources-workloads-namespace name: grafana-dashboard-k8s-resources-workloads-namespace readOnly: false + - mountPath: /grafana-dashboard-definitions/0/k8s-windows-cluster-rsrc-use + name: grafana-dashboard-k8s-windows-cluster-rsrc-use + readOnly: false + - mountPath: /grafana-dashboard-definitions/0/k8s-windows-node-rsrc-use + name: grafana-dashboard-k8s-windows-node-rsrc-use + readOnly: false - mountPath: /grafana-dashboard-definitions/0/kubelet name: grafana-dashboard-kubelet readOnly: false @@ -201,12 +216,27 @@ spec: - configMap: name: grafana-dashboard-k8s-resources-pod name: grafana-dashboard-k8s-resources-pod + - configMap: + name: grafana-dashboard-k8s-resources-windows-cluster + name: grafana-dashboard-k8s-resources-windows-cluster + - configMap: + name: grafana-dashboard-k8s-resources-windows-namespace + name: grafana-dashboard-k8s-resources-windows-namespace + - configMap: + name: grafana-dashboard-k8s-resources-windows-pod + name: grafana-dashboard-k8s-resources-windows-pod - configMap: name: grafana-dashboard-k8s-resources-workload name: grafana-dashboard-k8s-resources-workload - configMap: name: grafana-dashboard-k8s-resources-workloads-namespace name: grafana-dashboard-k8s-resources-workloads-namespace + - configMap: + name: grafana-dashboard-k8s-windows-cluster-rsrc-use + name: grafana-dashboard-k8s-windows-cluster-rsrc-use + - configMap: + name: grafana-dashboard-k8s-windows-node-rsrc-use + name: grafana-dashboard-k8s-windows-node-rsrc-use - configMap: name: grafana-dashboard-kubelet name: grafana-dashboard-kubelet diff --git a/manifests/grafana-networkPolicy.yaml b/manifests/grafana-networkPolicy.yaml index 39c964f966c1fff0c760e3407d45557056db3618..b0dc9eaf9528de6db36fe68e7e94ab49148b58e5 100644 --- a/manifests/grafana-networkPolicy.yaml +++ b/manifests/grafana-networkPolicy.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana namespace: monitoring spec: diff --git a/manifests/grafana-prometheusRule.yaml b/manifests/grafana-prometheusRule.yaml index f47c009de7da8f5b16e24311ec063e2868a61196..2369b18fbb7c298418887b6d059577bd2c8cea55 100644 --- a/manifests/grafana-prometheusRule.yaml +++ b/manifests/grafana-prometheusRule.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 prometheus: k8s role: alert-rules name: grafana-rules diff --git a/manifests/grafana-service.yaml b/manifests/grafana-service.yaml index 797022152f8784d35b8b574b322687363cc360aa..8fd6942103d334c5bd2a2b3ba07135bf0678a3ff 100644 --- a/manifests/grafana-service.yaml +++ b/manifests/grafana-service.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana namespace: monitoring spec: diff --git a/manifests/grafana-serviceAccount.yaml b/manifests/grafana-serviceAccount.yaml index 2c728604184e93810d1957b34fad0c4f4838cd1f..87ecb1d498d1d6ec297bcb8f787ac20392025839 100644 --- a/manifests/grafana-serviceAccount.yaml +++ b/manifests/grafana-serviceAccount.yaml @@ -6,6 +6,6 @@ metadata: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana namespace: monitoring diff --git a/manifests/grafana-serviceMonitor.yaml b/manifests/grafana-serviceMonitor.yaml index 219a5f04acc6667ded21b7822ff9cd94085262f6..1fe00d65d00d6768925bbe7bdf9cfd1dc93045f2 100644 --- a/manifests/grafana-serviceMonitor.yaml +++ b/manifests/grafana-serviceMonitor.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: grafana app.kubernetes.io/name: grafana app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 11.5.0 + app.kubernetes.io/version: 11.5.1 name: grafana namespace: monitoring spec: diff --git a/manifests/kubeStateMetrics-clusterRole.yaml b/manifests/kubeStateMetrics-clusterRole.yaml index c60acddbca8f83103afa7ff4525e5df7e33ab67c..b5ba5a3b989ff0462d2c91ec9b84310baadb9acb 100644 --- a/manifests/kubeStateMetrics-clusterRole.yaml +++ b/manifests/kubeStateMetrics-clusterRole.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 2.14.0 + app.kubernetes.io/version: 2.15.0 name: kube-state-metrics rules: - apiGroups: diff --git a/manifests/kubeStateMetrics-clusterRoleBinding.yaml b/manifests/kubeStateMetrics-clusterRoleBinding.yaml index 42d8107e4cb90270fe4791ee3bf491e105e06e27..4564151158898aad7229df9878e37efb49085a48 100644 --- a/manifests/kubeStateMetrics-clusterRoleBinding.yaml +++ b/manifests/kubeStateMetrics-clusterRoleBinding.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 2.14.0 + app.kubernetes.io/version: 2.15.0 name: kube-state-metrics roleRef: apiGroup: rbac.authorization.k8s.io diff --git a/manifests/kubeStateMetrics-deployment.yaml b/manifests/kubeStateMetrics-deployment.yaml index 38e7f3ab87f4bd554d26ff592aeafffad8401248..9a273676320f82b2141c14c4a6a8a0c57314ca95 100644 --- a/manifests/kubeStateMetrics-deployment.yaml +++ b/manifests/kubeStateMetrics-deployment.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 2.14.0 + app.kubernetes.io/version: 2.15.0 name: kube-state-metrics namespace: monitoring spec: @@ -23,7 +23,7 @@ spec: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 2.14.0 + app.kubernetes.io/version: 2.15.0 spec: automountServiceAccountToken: true containers: @@ -32,7 +32,7 @@ spec: - --port=8081 - --telemetry-host=127.0.0.1 - --telemetry-port=8082 - image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.14.0 + image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.15.0 name: kube-state-metrics resources: limits: diff --git a/manifests/kubeStateMetrics-networkPolicy.yaml b/manifests/kubeStateMetrics-networkPolicy.yaml index 51b4ccd5d4f687e157be67ab85d06805ee053ac1..7f7c93a5faf31189b9bd0beee228ddf65aca1c73 100644 --- a/manifests/kubeStateMetrics-networkPolicy.yaml +++ b/manifests/kubeStateMetrics-networkPolicy.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 2.14.0 + app.kubernetes.io/version: 2.15.0 name: kube-state-metrics namespace: monitoring spec: diff --git a/manifests/kubeStateMetrics-prometheusRule.yaml b/manifests/kubeStateMetrics-prometheusRule.yaml index 63b8fbea093e59189b3a314daf2d795bbeb5141b..9584db53966ff8f8f7b497b68b03ca8de3f2fa24 100644 --- a/manifests/kubeStateMetrics-prometheusRule.yaml +++ b/manifests/kubeStateMetrics-prometheusRule.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 2.14.0 + app.kubernetes.io/version: 2.15.0 prometheus: k8s role: alert-rules name: kube-state-metrics-rules diff --git a/manifests/kubeStateMetrics-service.yaml b/manifests/kubeStateMetrics-service.yaml index 3966ecce153d572c331535dce36aa3de3e6d547a..8ddc71401ea5a3b213477092c19b4a6dc797068c 100644 --- a/manifests/kubeStateMetrics-service.yaml +++ b/manifests/kubeStateMetrics-service.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 2.14.0 + app.kubernetes.io/version: 2.15.0 name: kube-state-metrics namespace: monitoring spec: diff --git a/manifests/kubeStateMetrics-serviceAccount.yaml b/manifests/kubeStateMetrics-serviceAccount.yaml index 13441229bde56dd39d7896e547ed3b7b173b0b0b..d5a38642fd07254ff358189af2be16512f2f47c4 100644 --- a/manifests/kubeStateMetrics-serviceAccount.yaml +++ b/manifests/kubeStateMetrics-serviceAccount.yaml @@ -6,6 +6,6 @@ metadata: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 2.14.0 + app.kubernetes.io/version: 2.15.0 name: kube-state-metrics namespace: monitoring diff --git a/manifests/kubeStateMetrics-serviceMonitor.yaml b/manifests/kubeStateMetrics-serviceMonitor.yaml index 589455673fd83e4ca2aed41b89963ff96240875c..0144e87f86b276ba9da0f868ba696be308e9d311 100644 --- a/manifests/kubeStateMetrics-serviceMonitor.yaml +++ b/manifests/kubeStateMetrics-serviceMonitor.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 2.14.0 + app.kubernetes.io/version: 2.15.0 name: kube-state-metrics namespace: monitoring spec: diff --git a/manifests/kubernetesControlPlane-prometheusRule.yaml b/manifests/kubernetesControlPlane-prometheusRule.yaml index df7f95ebb38bcd1ddf2342be4a9d3e577fbe35c4..06d46831c22e935611c2a8d264ce1c3dd81460a1 100644 --- a/manifests/kubernetesControlPlane-prometheusRule.yaml +++ b/manifests/kubernetesControlPlane-prometheusRule.yaml @@ -633,14 +633,16 @@ spec: runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubelettoomanypods summary: Kubelet is running at capacity. expr: | - count by (cluster, node) ( - (kube_pod_status_phase{job="kube-state-metrics", phase="Running"} == 1) - * on (cluster, namespace, pod) group_left (node) - group by (cluster, namespace, pod, node) ( - kube_pod_info{job="kube-state-metrics"} + ( + max by (cluster, instance) ( + kubelet_running_pods{job="kubelet", metrics_path="/metrics"} > 1 + ) + * on (cluster, instance) group_left(node) + max by (cluster, instance, node) ( + kubelet_node_name{job="kubelet", metrics_path="/metrics"} ) ) - / + / on (cluster, node) group_left() max by (cluster, node) ( kube_node_status_capacity{job="kube-state-metrics", resource="pods"} != 1 ) > 0.95 @@ -1478,3 +1480,139 @@ spec: labels: quantile: "0.5" record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile + - name: windows.node.rules + rules: + - expr: | + count by (cluster) ( + windows_system_system_up_time{job="kubernetes-windows-exporter"} + ) + record: node:windows_node:sum + - expr: | + count by (cluster, instance) (sum by (cluster, instance, core) ( + windows_cpu_time_total{job="kubernetes-windows-exporter"} + )) + record: node:windows_node_num_cpu:sum + - expr: | + 1 - avg by (cluster) (rate(windows_cpu_time_total{job="kubernetes-windows-exporter",mode="idle"}[1m])) + record: :windows_node_cpu_utilisation:avg1m + - expr: | + 1 - avg by (cluster, instance) ( + rate(windows_cpu_time_total{job="kubernetes-windows-exporter",mode="idle"}[1m]) + ) + record: node:windows_node_cpu_utilisation:avg1m + - expr: | + 1 - + sum by (cluster) (windows_memory_available_bytes{job="kubernetes-windows-exporter"}) + / + sum by (cluster) (windows_os_visible_memory_bytes{job="kubernetes-windows-exporter"}) + record: ':windows_node_memory_utilisation:' + - expr: | + sum by (cluster) (windows_memory_available_bytes{job="kubernetes-windows-exporter"} + windows_memory_cache_bytes{job="kubernetes-windows-exporter"}) + record: :windows_node_memory_MemFreeCached_bytes:sum + - expr: | + (windows_memory_cache_bytes{job="kubernetes-windows-exporter"} + windows_memory_modified_page_list_bytes{job="kubernetes-windows-exporter"} + windows_memory_standby_cache_core_bytes{job="kubernetes-windows-exporter"} + windows_memory_standby_cache_normal_priority_bytes{job="kubernetes-windows-exporter"} + windows_memory_standby_cache_reserve_bytes{job="kubernetes-windows-exporter"}) + record: node:windows_node_memory_totalCached_bytes:sum + - expr: | + sum by (cluster) (windows_os_visible_memory_bytes{job="kubernetes-windows-exporter"}) + record: :windows_node_memory_MemTotal_bytes:sum + - expr: | + sum by (cluster, instance) ( + (windows_memory_available_bytes{job="kubernetes-windows-exporter"}) + ) + record: node:windows_node_memory_bytes_available:sum + - expr: | + sum by (cluster, instance) ( + windows_os_visible_memory_bytes{job="kubernetes-windows-exporter"} + ) + record: node:windows_node_memory_bytes_total:sum + - expr: | + (node:windows_node_memory_bytes_total:sum - node:windows_node_memory_bytes_available:sum) + / + scalar(sum(node:windows_node_memory_bytes_total:sum)) + record: node:windows_node_memory_utilisation:ratio + - expr: | + 1 - (node:windows_node_memory_bytes_available:sum / node:windows_node_memory_bytes_total:sum) + record: 'node:windows_node_memory_utilisation:' + - expr: | + irate(windows_memory_swap_page_operations_total{job="kubernetes-windows-exporter"}[5m]) + record: node:windows_node_memory_swap_io_pages:irate + - expr: | + avg by (cluster) (irate(windows_logical_disk_read_seconds_total{job="kubernetes-windows-exporter"}[1m]) + + irate(windows_logical_disk_write_seconds_total{job="kubernetes-windows-exporter"}[1m]) + ) + record: :windows_node_disk_utilisation:avg_irate + - expr: | + avg by (cluster, instance) ( + (irate(windows_logical_disk_read_seconds_total{job="kubernetes-windows-exporter"}[1m]) + + irate(windows_logical_disk_write_seconds_total{job="kubernetes-windows-exporter"}[1m])) + ) + record: node:windows_node_disk_utilisation:avg_irate + - expr: | + max by (cluster,instance,volume)( + (windows_logical_disk_size_bytes{job="kubernetes-windows-exporter"} + - windows_logical_disk_free_bytes{job="kubernetes-windows-exporter"}) + / windows_logical_disk_size_bytes{job="kubernetes-windows-exporter"} + ) + record: 'node:windows_node_filesystem_usage:' + - expr: | + max by (cluster, instance, volume) (windows_logical_disk_free_bytes{job="kubernetes-windows-exporter"} / windows_logical_disk_size_bytes{job="kubernetes-windows-exporter"}) + record: 'node:windows_node_filesystem_avail:' + - expr: | + sum by (cluster) (irate(windows_net_bytes_total{job="kubernetes-windows-exporter"}[1m])) + record: :windows_node_net_utilisation:sum_irate + - expr: | + sum by (cluster, instance) ( + (irate(windows_net_bytes_total{job="kubernetes-windows-exporter"}[1m])) + ) + record: node:windows_node_net_utilisation:sum_irate + - expr: | + sum by (cluster) (irate(windows_net_packets_received_discarded_total{job="kubernetes-windows-exporter"}[1m])) + + sum by (cluster) (irate(windows_net_packets_outbound_discarded_total{job="kubernetes-windows-exporter"}[1m])) + record: :windows_node_net_saturation:sum_irate + - expr: | + sum by (cluster, instance) ( + (irate(windows_net_packets_received_discarded_total{job="kubernetes-windows-exporter"}[1m]) + + irate(windows_net_packets_outbound_discarded_total{job="kubernetes-windows-exporter"}[1m])) + ) + record: node:windows_node_net_saturation:sum_irate + - name: windows.pod.rules + rules: + - expr: | + windows_container_available{job="kubernetes-windows-exporter", container_id != ""} * on(container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job="kube-state-metrics", container_id != ""}) by(container, container_id, pod, namespace, cluster) + record: windows_pod_container_available + - expr: | + windows_container_cpu_usage_seconds_total{job="kubernetes-windows-exporter", container_id != ""} * on(container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job="kube-state-metrics", container_id != ""}) by(container, container_id, pod, namespace, cluster) + record: windows_container_total_runtime + - expr: | + windows_container_memory_usage_commit_bytes{job="kubernetes-windows-exporter", container_id != ""} * on(container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job="kube-state-metrics", container_id != ""}) by(container, container_id, pod, namespace, cluster) + record: windows_container_memory_usage + - expr: | + windows_container_memory_usage_private_working_set_bytes{job="kubernetes-windows-exporter", container_id != ""} * on(container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job="kube-state-metrics", container_id != ""}) by(container, container_id, pod, namespace, cluster) + record: windows_container_private_working_set_usage + - expr: | + windows_container_network_receive_bytes_total{job="kubernetes-windows-exporter", container_id != ""} * on(container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job="kube-state-metrics", container_id != ""}) by(container, container_id, pod, namespace, cluster) + record: windows_container_network_received_bytes_total + - expr: | + windows_container_network_transmit_bytes_total{job="kubernetes-windows-exporter", container_id != ""} * on(container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job="kube-state-metrics", container_id != ""}) by(container, container_id, pod, namespace, cluster) + record: windows_container_network_transmitted_bytes_total + - expr: | + max by (cluster, namespace, pod, container) ( + kube_pod_container_resource_requests{resource="memory",job="kube-state-metrics"} + ) * on(container,pod,namespace,cluster) (windows_pod_container_available) + record: kube_pod_windows_container_resource_memory_request + - expr: | + kube_pod_container_resource_limits{resource="memory",job="kube-state-metrics"} * on(container,pod,namespace,cluster) (windows_pod_container_available) + record: kube_pod_windows_container_resource_memory_limit + - expr: | + max by (cluster, namespace, pod, container) ( + kube_pod_container_resource_requests{resource="cpu",job="kube-state-metrics"} + ) * on(container,pod,namespace,cluster) (windows_pod_container_available) + record: kube_pod_windows_container_resource_cpu_cores_request + - expr: | + kube_pod_container_resource_limits{resource="cpu",job="kube-state-metrics"} * on(container,pod,namespace,cluster) (windows_pod_container_available) + record: kube_pod_windows_container_resource_cpu_cores_limit + - expr: | + sum by (cluster, namespace, pod, container) ( + rate(windows_container_total_runtime{}[5m]) + ) + record: namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate diff --git a/manifests/prometheusOperator-clusterRole.yaml b/manifests/prometheusOperator-clusterRole.yaml index ef7914bad30b0d45ebd53335b8ffdfe66fed9bff..52822238777333a1638a584f5d523052e7e86c65 100644 --- a/manifests/prometheusOperator-clusterRole.yaml +++ b/manifests/prometheusOperator-clusterRole.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 0.79.2 + app.kubernetes.io/version: 0.80.0 name: prometheus-operator rules: - apiGroups: diff --git a/manifests/prometheusOperator-clusterRoleBinding.yaml b/manifests/prometheusOperator-clusterRoleBinding.yaml index edd2525b4de2f6df2e2a9f56862bdc6cf471c3c8..790b6ceee0bcfeb81b32f545d3dbb89a6f95ce82 100644 --- a/manifests/prometheusOperator-clusterRoleBinding.yaml +++ b/manifests/prometheusOperator-clusterRoleBinding.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 0.79.2 + app.kubernetes.io/version: 0.80.0 name: prometheus-operator roleRef: apiGroup: rbac.authorization.k8s.io diff --git a/manifests/prometheusOperator-deployment.yaml b/manifests/prometheusOperator-deployment.yaml index 2046393a020aed30d4d745090c9bb9165d8a1352..ea4e197d8c6eb87e2fc42353c1ecf36edef7d772 100644 --- a/manifests/prometheusOperator-deployment.yaml +++ b/manifests/prometheusOperator-deployment.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 0.79.2 + app.kubernetes.io/version: 0.80.0 name: prometheus-operator namespace: monitoring spec: @@ -23,19 +23,19 @@ spec: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 0.79.2 + app.kubernetes.io/version: 0.80.0 spec: automountServiceAccountToken: true containers: - args: - --kubelet-service=kube-system/kubelet - - --prometheus-config-reloader=quay.io/prometheus-operator/prometheus-config-reloader:v0.79.2 + - --prometheus-config-reloader=quay.io/prometheus-operator/prometheus-config-reloader:v0.80.0 - --kubelet-endpoints=true - --kubelet-endpointslice=false env: - name: GOGC value: "30" - image: quay.io/prometheus-operator/prometheus-operator:v0.79.2 + image: quay.io/prometheus-operator/prometheus-operator:v0.80.0 name: prometheus-operator ports: - containerPort: 8080 diff --git a/manifests/prometheusOperator-networkPolicy.yaml b/manifests/prometheusOperator-networkPolicy.yaml index ee595b847f6d0095502a2a8fe984096d031314df..6ec5c848a471d4550dbaf7b1de4035f9c5d43622 100644 --- a/manifests/prometheusOperator-networkPolicy.yaml +++ b/manifests/prometheusOperator-networkPolicy.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 0.79.2 + app.kubernetes.io/version: 0.80.0 name: prometheus-operator namespace: monitoring spec: diff --git a/manifests/prometheusOperator-prometheusRule.yaml b/manifests/prometheusOperator-prometheusRule.yaml index fc19095be1bc3099430ce1248fc3b51bfcee3c62..2f9b997bf511a7b0752fb82b36e2782d830df136 100644 --- a/manifests/prometheusOperator-prometheusRule.yaml +++ b/manifests/prometheusOperator-prometheusRule.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 0.79.2 + app.kubernetes.io/version: 0.80.0 prometheus: k8s role: alert-rules name: prometheus-operator-rules diff --git a/manifests/prometheusOperator-service.yaml b/manifests/prometheusOperator-service.yaml index f3b5cfe31da43389c9dfb56c8b2c25317dbd3dcb..52b5b53a293d1173a151441de867fd1ec7f9ff8b 100644 --- a/manifests/prometheusOperator-service.yaml +++ b/manifests/prometheusOperator-service.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 0.79.2 + app.kubernetes.io/version: 0.80.0 name: prometheus-operator namespace: monitoring spec: diff --git a/manifests/prometheusOperator-serviceAccount.yaml b/manifests/prometheusOperator-serviceAccount.yaml index 812c7f9a33acbcd32ce23d7b75cdb175ec9cb77f..f2ee83cc2c1c6f9c14a7a15c754b6f4b85bffaf3 100644 --- a/manifests/prometheusOperator-serviceAccount.yaml +++ b/manifests/prometheusOperator-serviceAccount.yaml @@ -6,6 +6,6 @@ metadata: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 0.79.2 + app.kubernetes.io/version: 0.80.0 name: prometheus-operator namespace: monitoring diff --git a/manifests/prometheusOperator-serviceMonitor.yaml b/manifests/prometheusOperator-serviceMonitor.yaml index 76aa644a12c955667d4c27f49e0f86cc752d827d..3f5677d4750731ee4e62ed5b2aa089be7c3c7be6 100644 --- a/manifests/prometheusOperator-serviceMonitor.yaml +++ b/manifests/prometheusOperator-serviceMonitor.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 0.79.2 + app.kubernetes.io/version: 0.80.0 name: prometheus-operator namespace: monitoring spec: @@ -21,4 +21,4 @@ spec: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: kube-prometheus - app.kubernetes.io/version: 0.79.2 + app.kubernetes.io/version: 0.80.0 diff --git a/manifests/setup/0alertmanagerConfigCustomResourceDefinition.yaml b/manifests/setup/0alertmanagerConfigCustomResourceDefinition.yaml index 77094631a5878d2bf84335be2f4aa250e5772dbe..a7f751b14a97b941c15000d9780e58685a4ab814 100644 --- a/manifests/setup/0alertmanagerConfigCustomResourceDefinition.yaml +++ b/manifests/setup/0alertmanagerConfigCustomResourceDefinition.yaml @@ -2,8 +2,8 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.17.1 - operator.prometheus.io/version: 0.79.2 + controller-gen.kubebuilder.io/version: v0.17.2 + operator.prometheus.io/version: 0.80.0 name: alertmanagerconfigs.monitoring.coreos.com spec: group: monitoring.coreos.com diff --git a/manifests/setup/0alertmanagerCustomResourceDefinition.yaml b/manifests/setup/0alertmanagerCustomResourceDefinition.yaml index aee0f6381f55dfc81622401f6121d3b5b2f2681a..440f725c39809f6c7d5e25eb2c6c17c7e684ce00 100644 --- a/manifests/setup/0alertmanagerCustomResourceDefinition.yaml +++ b/manifests/setup/0alertmanagerCustomResourceDefinition.yaml @@ -2,8 +2,8 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.17.1 - operator.prometheus.io/version: 0.79.2 + controller-gen.kubebuilder.io/version: v0.17.2 + operator.prometheus.io/version: 0.80.0 name: alertmanagers.monitoring.coreos.com spec: group: monitoring.coreos.com diff --git a/manifests/setup/0podmonitorCustomResourceDefinition.yaml b/manifests/setup/0podmonitorCustomResourceDefinition.yaml index 6bfa596189f11e909139a3ce3417c10c0bc19844..c545330da0a17ecd7bfce4b37f5a0a3ebc7cce77 100644 --- a/manifests/setup/0podmonitorCustomResourceDefinition.yaml +++ b/manifests/setup/0podmonitorCustomResourceDefinition.yaml @@ -2,8 +2,8 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.17.1 - operator.prometheus.io/version: 0.79.2 + controller-gen.kubebuilder.io/version: v0.17.2 + operator.prometheus.io/version: 0.80.0 name: podmonitors.monitoring.coreos.com spec: group: monitoring.coreos.com diff --git a/manifests/setup/0probeCustomResourceDefinition.yaml b/manifests/setup/0probeCustomResourceDefinition.yaml index 12517173f97c855eb732043427bfc02cf5d4da32..506e37d43bda57bb2602d9b0b059a3281ab6f987 100644 --- a/manifests/setup/0probeCustomResourceDefinition.yaml +++ b/manifests/setup/0probeCustomResourceDefinition.yaml @@ -2,8 +2,8 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.17.1 - operator.prometheus.io/version: 0.79.2 + controller-gen.kubebuilder.io/version: v0.17.2 + operator.prometheus.io/version: 0.80.0 name: probes.monitoring.coreos.com spec: group: monitoring.coreos.com diff --git a/manifests/setup/0prometheusCustomResourceDefinition.yaml b/manifests/setup/0prometheusCustomResourceDefinition.yaml index 4c9e5eefb99cd3e029fcf13730f4b0649d71cdf9..382a58f8725d1dac8236d252a3c407210cd1fdf3 100644 --- a/manifests/setup/0prometheusCustomResourceDefinition.yaml +++ b/manifests/setup/0prometheusCustomResourceDefinition.yaml @@ -2,8 +2,8 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.17.1 - operator.prometheus.io/version: 0.79.2 + controller-gen.kubebuilder.io/version: v0.17.2 + operator.prometheus.io/version: 0.80.0 name: prometheuses.monitoring.coreos.com spec: group: monitoring.coreos.com @@ -7036,6 +7036,21 @@ spec: description: Timeout for requests to the remote write endpoint. pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ type: string + roundRobinDNS: + description: |- + When enabled: + - The remote-write mechanism will resolve the hostname via DNS. + - It will randomly select one of the resolved IP addresses and connect to it. + + When disabled (default behavior): + - The Go standard library will handle hostname resolution. + - It will attempt connections to each resolved IP address sequentially. + + Note: The connection timeout applies to the entire resolution and connection process. + If disabled, the timeout is distributed across all connection attempts. + + It requires Prometheus >= v3.1.0. + type: boolean sendExemplars: description: |- Enables sending of exemplars over remote write. Note that diff --git a/manifests/setup/0prometheusagentCustomResourceDefinition.yaml b/manifests/setup/0prometheusagentCustomResourceDefinition.yaml index ec187e26145519d43c1a479e7baaf309c1fd38d6..62c1fa26a7a7bb57569e091d311268698791f1ae 100644 --- a/manifests/setup/0prometheusagentCustomResourceDefinition.yaml +++ b/manifests/setup/0prometheusagentCustomResourceDefinition.yaml @@ -2,8 +2,8 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.17.1 - operator.prometheus.io/version: 0.79.2 + controller-gen.kubebuilder.io/version: v0.17.2 + operator.prometheus.io/version: 0.80.0 name: prometheusagents.monitoring.coreos.com spec: group: monitoring.coreos.com @@ -5568,6 +5568,21 @@ spec: description: Timeout for requests to the remote write endpoint. pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ type: string + roundRobinDNS: + description: |- + When enabled: + - The remote-write mechanism will resolve the hostname via DNS. + - It will randomly select one of the resolved IP addresses and connect to it. + + When disabled (default behavior): + - The Go standard library will handle hostname resolution. + - It will attempt connections to each resolved IP address sequentially. + + Note: The connection timeout applies to the entire resolution and connection process. + If disabled, the timeout is distributed across all connection attempts. + + It requires Prometheus >= v3.1.0. + type: boolean sendExemplars: description: |- Enables sending of exemplars over remote write. Note that diff --git a/manifests/setup/0prometheusruleCustomResourceDefinition.yaml b/manifests/setup/0prometheusruleCustomResourceDefinition.yaml index 00c084d46741aad54366e1ffdaa08b316bf3f1a4..8a8c7449b4734f3b3fde7d69f740818e72bbdb84 100644 --- a/manifests/setup/0prometheusruleCustomResourceDefinition.yaml +++ b/manifests/setup/0prometheusruleCustomResourceDefinition.yaml @@ -2,8 +2,8 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.17.1 - operator.prometheus.io/version: 0.79.2 + controller-gen.kubebuilder.io/version: v0.17.2 + operator.prometheus.io/version: 0.80.0 name: prometheusrules.monitoring.coreos.com spec: group: monitoring.coreos.com diff --git a/manifests/setup/0scrapeconfigCustomResourceDefinition.yaml b/manifests/setup/0scrapeconfigCustomResourceDefinition.yaml index 5aa438436a55f60b971839554bb3d46b209621fa..d0a751c53ef00179cd2517846b6c07d4c80b1797 100644 --- a/manifests/setup/0scrapeconfigCustomResourceDefinition.yaml +++ b/manifests/setup/0scrapeconfigCustomResourceDefinition.yaml @@ -2,8 +2,8 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.17.1 - operator.prometheus.io/version: 0.79.2 + controller-gen.kubebuilder.io/version: v0.17.2 + operator.prometheus.io/version: 0.80.0 name: scrapeconfigs.monitoring.coreos.com spec: group: monitoring.coreos.com @@ -5795,6 +5795,306 @@ spec: It requires Prometheus >= v2.43.0 or Alertmanager >= 0.25.0. type: string + oauth2: + description: Configure whether to enable OAuth2. + properties: + clientId: + description: |- + `clientId` specifies a key of a Secret or ConfigMap containing the + OAuth2 client's ID. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + default: "" + description: |- + Name of the referent. + This field is effectively required, but due to backwards compatibility is + allowed to be empty. Instances of this type with an empty value here are + almost certainly wrong. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + default: "" + description: |- + Name of the referent. + This field is effectively required, but due to backwards compatibility is + allowed to be empty. Instances of this type with an empty value here are + almost certainly wrong. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + clientSecret: + description: |- + `clientSecret` specifies a key of a Secret containing the OAuth2 + client's secret. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + default: "" + description: |- + Name of the referent. + This field is effectively required, but due to backwards compatibility is + allowed to be empty. Instances of this type with an empty value here are + almost certainly wrong. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + endpointParams: + additionalProperties: + type: string + description: |- + `endpointParams` configures the HTTP parameters to append to the token + URL. + type: object + noProxy: + description: |- + `noProxy` is a comma-separated string that can contain IPs, CIDR notation, domain names + that should be excluded from proxying. IP and domain names can + contain port numbers. + + It requires Prometheus >= v2.43.0 or Alertmanager >= 0.25.0. + type: string + proxyConnectHeader: + additionalProperties: + items: + description: SecretKeySelector selects a key of a Secret. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + default: "" + description: |- + Name of the referent. + This field is effectively required, but due to backwards compatibility is + allowed to be empty. Instances of this type with an empty value here are + almost certainly wrong. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: array + description: |- + ProxyConnectHeader optionally specifies headers to send to + proxies during CONNECT requests. + + It requires Prometheus >= v2.43.0 or Alertmanager >= 0.25.0. + type: object + x-kubernetes-map-type: atomic + proxyFromEnvironment: + description: |- + Whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY). + + It requires Prometheus >= v2.43.0 or Alertmanager >= 0.25.0. + type: boolean + proxyUrl: + description: '`proxyURL` defines the HTTP proxy server to use.' + pattern: ^http(s)?://.+$ + type: string + scopes: + description: '`scopes` defines the OAuth2 scopes used for the token request.' + items: + type: string + type: array + tlsConfig: + description: |- + TLS configuration to use when connecting to the OAuth2 server. + It requires Prometheus >= v2.43.0. + properties: + ca: + description: Certificate authority used when verifying server certificates. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + default: "" + description: |- + Name of the referent. + This field is effectively required, but due to backwards compatibility is + allowed to be empty. Instances of this type with an empty value here are + almost certainly wrong. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + default: "" + description: |- + Name of the referent. + This field is effectively required, but due to backwards compatibility is + allowed to be empty. Instances of this type with an empty value here are + almost certainly wrong. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + cert: + description: Client certificate to present when doing client-authentication. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + default: "" + description: |- + Name of the referent. + This field is effectively required, but due to backwards compatibility is + allowed to be empty. Instances of this type with an empty value here are + almost certainly wrong. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + default: "" + description: |- + Name of the referent. + This field is effectively required, but due to backwards compatibility is + allowed to be empty. Instances of this type with an empty value here are + almost certainly wrong. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key file for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + default: "" + description: |- + Name of the referent. + This field is effectively required, but due to backwards compatibility is + allowed to be empty. Instances of this type with an empty value here are + almost certainly wrong. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + maxVersion: + description: |- + Maximum acceptable TLS version. + + It requires Prometheus >= v2.41.0. + enum: + - TLS10 + - TLS11 + - TLS12 + - TLS13 + type: string + minVersion: + description: |- + Minimum acceptable TLS version. + + It requires Prometheus >= v2.35.0. + enum: + - TLS10 + - TLS11 + - TLS12 + - TLS13 + type: string + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + tokenUrl: + description: '`tokenURL` configures the URL to fetch the token from.' + minLength: 1 + type: string + required: + - clientId + - clientSecret + - tokenUrl + type: object port: description: Port to scrape the metrics from. format: int32 @@ -9659,6 +9959,7 @@ spec: required if using an application credential to authenticate. Some providers allow you to create an application credential to authenticate rather than a password. + minLength: 1 type: string applicationCredentialSecret: description: |- @@ -9696,16 +9997,19 @@ spec: type: string domainID: description: DomainID + minLength: 1 type: string domainName: description: |- At most one of domainId and domainName must be provided if using username with Identity V3. Otherwise, either are optional. + minLength: 1 type: string identityEndpoint: description: |- IdentityEndpoint specifies the HTTP endpoint that is required to work with the Identity API of the appropriate version. + pattern: ^http(s)?:\/\/.+$ type: string password: description: |- @@ -9735,9 +10039,13 @@ spec: description: |- The port to scrape metrics from. If using the public IP address, this must instead be specified in the relabeling rule. + format: int32 + maximum: 65535 + minimum: 0 type: integer projectID: description: ' ProjectID' + minLength: 1 type: string projectName: description: |- @@ -9745,6 +10053,7 @@ spec: Some providers allow you to specify a ProjectName instead of the ProjectId. Some require both. Your provider's authentication policies will determine how these fields influence authentication. + minLength: 1 type: string refreshInterval: description: Refresh interval to re-read the instance list. @@ -9914,6 +10223,7 @@ spec: type: object userid: description: UserID + minLength: 1 type: string username: description: |- @@ -9921,6 +10231,7 @@ spec: control panel to discover your account's username. In Identity V3, either userid or a combination of username and domainId or domainName are needed + minLength: 1 type: string required: - region diff --git a/manifests/setup/0servicemonitorCustomResourceDefinition.yaml b/manifests/setup/0servicemonitorCustomResourceDefinition.yaml index 452ad147c82ac4778445b7798aa6e32182d6e980..87d6b4154169cc4c3f6a9fd5b43a93f2698e87d3 100644 --- a/manifests/setup/0servicemonitorCustomResourceDefinition.yaml +++ b/manifests/setup/0servicemonitorCustomResourceDefinition.yaml @@ -2,8 +2,8 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.17.1 - operator.prometheus.io/version: 0.79.2 + controller-gen.kubebuilder.io/version: v0.17.2 + operator.prometheus.io/version: 0.80.0 name: servicemonitors.monitoring.coreos.com spec: group: monitoring.coreos.com diff --git a/manifests/setup/0thanosrulerCustomResourceDefinition.yaml b/manifests/setup/0thanosrulerCustomResourceDefinition.yaml index d118dfbd677038e3a9507d11e11234f3011ce7cf..e4d916c7b92d90bd93429a09c0ab79bd42e10b7b 100644 --- a/manifests/setup/0thanosrulerCustomResourceDefinition.yaml +++ b/manifests/setup/0thanosrulerCustomResourceDefinition.yaml @@ -2,8 +2,8 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.17.1 - operator.prometheus.io/version: 0.79.2 + controller-gen.kubebuilder.io/version: v0.17.2 + operator.prometheus.io/version: 0.80.0 name: thanosrulers.monitoring.coreos.com spec: group: monitoring.coreos.com