diff --git a/.checksums b/.checksums index 1057ae8ab30..7326e9b5824 100644 --- a/.checksums +++ b/.checksums @@ -6,7 +6,7 @@ # if this checksum has changed as part of any non-release specific changes, please apply your changes to the # development version of the helm charts in ./packaging/helm-charts ### IMPORTANT ### -HELM_CHART_CHECKSUM="9195d996f79ced2f87fd49835ec3902561eb6b87 -" +HELM_CHART_CHECKSUM="1aa3d3b4e4f260ac8368cf0c01ce4abb782d9910 -" ### IMPORTANT ### # if the below line has changed, this means the ./install directory has changed @@ -14,7 +14,7 @@ HELM_CHART_CHECKSUM="9195d996f79ced2f87fd49835ec3902561eb6b87 -" # if this checksum has changed as part of any non-release specific changes, please apply your changes to the # development version of the helm charts in ./packaging/install ### IMPORTANT ### -INSTALL_CHECKSUM="c3d55f5e2dfb337638f6eb882963de99ee2f355d -" +INSTALL_CHECKSUM="a9682ec63cc2ccbe2a19f4b06ef0ba77a08c40ac -" ### IMPORTANT ### # if the below line has changed, this means the ./examples directory has changed @@ -22,4 +22,4 @@ INSTALL_CHECKSUM="c3d55f5e2dfb337638f6eb882963de99ee2f355d -" # if this checksum has changed as part of any non-release specific changes, please apply your changes to the # development version of the helm charts in ./packaging/examples ### IMPORTANT ### -EXAMPLES_CHECKSUM="f2dfd4fa4ba6ec122382b66b8d3a53eb129f0abd -" +EXAMPLES_CHECKSUM="7f6f2f9a13f66b9d693760093b4ca645d6ec4e7b -" diff --git a/api/pom.xml b/api/pom.xml index f976905fdeb..17b4ae30296 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -4,7 +4,7 @@ io.strimzi strimzi - 0.39.0-SNAPSHOT + 0.39.0 4.0.0 api diff --git a/certificate-manager/pom.xml b/certificate-manager/pom.xml index f3ea64f6ad7..0cf6338a701 100644 --- a/certificate-manager/pom.xml +++ b/certificate-manager/pom.xml @@ -5,7 +5,7 @@ strimzi io.strimzi - 0.39.0-SNAPSHOT + 0.39.0 4.0.0 certificate-manager diff --git a/cluster-operator/pom.xml b/cluster-operator/pom.xml index e281fad459f..147ffe249bc 100644 --- a/cluster-operator/pom.xml +++ b/cluster-operator/pom.xml @@ -4,7 +4,7 @@ io.strimzi strimzi - 0.39.0-SNAPSHOT + 0.39.0 4.0.0 cluster-operator diff --git a/config-model-generator/pom.xml b/config-model-generator/pom.xml index dcd1fcdddf8..a5767d11406 100644 --- a/config-model-generator/pom.xml +++ b/config-model-generator/pom.xml @@ -5,7 +5,7 @@ strimzi io.strimzi - 0.39.0-SNAPSHOT + 0.39.0 4.0.0 diff --git a/config-model/pom.xml b/config-model/pom.xml index dac4ace76cb..c4756c86e3e 100644 --- a/config-model/pom.xml +++ b/config-model/pom.xml @@ -5,7 +5,7 @@ strimzi io.strimzi - 0.39.0-SNAPSHOT + 0.39.0 4.0.0 diff --git a/crd-annotations/pom.xml b/crd-annotations/pom.xml index 1a73287a941..8f065340b1d 100644 --- a/crd-annotations/pom.xml +++ b/crd-annotations/pom.xml @@ -5,7 +5,7 @@ strimzi io.strimzi - 0.39.0-SNAPSHOT + 0.39.0 4.0.0 diff --git a/crd-generator/pom.xml b/crd-generator/pom.xml index bd710731089..682114f41d6 100644 --- a/crd-generator/pom.xml +++ b/crd-generator/pom.xml @@ -5,7 +5,7 @@ strimzi io.strimzi - 0.39.0-SNAPSHOT + 0.39.0 4.0.0 crd-generator diff --git a/examples/connect/kafka-connect-build.yaml b/examples/connect/kafka-connect-build.yaml index aaf6ade954c..4429e0a3195 100644 --- a/examples/connect/kafka-connect-build.yaml +++ b/examples/connect/kafka-connect-build.yaml @@ -8,7 +8,7 @@ metadata: # # needing to call the Connect REST API directly # strimzi.io/use-connector-resources: "true" spec: - version: 3.6.0 + version: 3.6.1 replicas: 1 bootstrapServers: my-cluster-kafka-bootstrap:9093 tls: @@ -33,11 +33,11 @@ spec: # it should not happen that you pull someone else's container image. However, we # recommend changing this to your own container registry or using a different # image name for any other than demo purposes. - image: ttl.sh/strimzi-connect-example-3.6.0:24h + image: ttl.sh/strimzi-connect-example-3.6.1:24h plugins: - name: kafka-connect-file artifacts: - type: maven group: org.apache.kafka artifact: connect-file - version: 3.6.0 + version: 3.6.1 diff --git a/examples/connect/kafka-connect.yaml b/examples/connect/kafka-connect.yaml index cc32b2766a0..ea7662a379e 100644 --- a/examples/connect/kafka-connect.yaml +++ b/examples/connect/kafka-connect.yaml @@ -8,7 +8,7 @@ metadata: # # needing to call the Connect REST API directly # strimzi.io/use-connector-resources: "true" spec: - version: 3.6.0 + version: 3.6.1 replicas: 1 bootstrapServers: my-cluster-kafka-bootstrap:9093 tls: diff --git a/examples/cruise-control/kafka-cruise-control-with-goals.yaml b/examples/cruise-control/kafka-cruise-control-with-goals.yaml index 4b23cfba154..eac880b21e4 100644 --- a/examples/cruise-control/kafka-cruise-control-with-goals.yaml +++ b/examples/cruise-control/kafka-cruise-control-with-goals.yaml @@ -4,7 +4,7 @@ metadata: name: my-cluster spec: kafka: - version: 3.6.0 + version: 3.6.1 replicas: 3 listeners: - name: plain diff --git a/examples/cruise-control/kafka-cruise-control.yaml b/examples/cruise-control/kafka-cruise-control.yaml index eae71bff075..edb18e32f9f 100644 --- a/examples/cruise-control/kafka-cruise-control.yaml +++ b/examples/cruise-control/kafka-cruise-control.yaml @@ -4,7 +4,7 @@ metadata: name: my-cluster spec: kafka: - version: 3.6.0 + version: 3.6.1 replicas: 3 listeners: - name: plain diff --git a/examples/kafka/kafka-ephemeral-single.yaml b/examples/kafka/kafka-ephemeral-single.yaml index d3747fe77a9..808d0332340 100644 --- a/examples/kafka/kafka-ephemeral-single.yaml +++ b/examples/kafka/kafka-ephemeral-single.yaml @@ -4,7 +4,7 @@ metadata: name: my-cluster spec: kafka: - version: 3.6.0 + version: 3.6.1 replicas: 1 listeners: - name: plain diff --git a/examples/kafka/kafka-ephemeral.yaml b/examples/kafka/kafka-ephemeral.yaml index f4ff6786b5d..99e985e0911 100644 --- a/examples/kafka/kafka-ephemeral.yaml +++ b/examples/kafka/kafka-ephemeral.yaml @@ -4,7 +4,7 @@ metadata: name: my-cluster spec: kafka: - version: 3.6.0 + version: 3.6.1 replicas: 3 listeners: - name: plain diff --git a/examples/kafka/kafka-jbod.yaml b/examples/kafka/kafka-jbod.yaml index 77d453e8734..230ee3b3585 100644 --- a/examples/kafka/kafka-jbod.yaml +++ b/examples/kafka/kafka-jbod.yaml @@ -4,7 +4,7 @@ metadata: name: my-cluster spec: kafka: - version: 3.6.0 + version: 3.6.1 replicas: 3 listeners: - name: plain diff --git a/examples/kafka/kafka-persistent-single.yaml b/examples/kafka/kafka-persistent-single.yaml index 0206e436738..e69200db995 100644 --- a/examples/kafka/kafka-persistent-single.yaml +++ b/examples/kafka/kafka-persistent-single.yaml @@ -4,7 +4,7 @@ metadata: name: my-cluster spec: kafka: - version: 3.6.0 + version: 3.6.1 replicas: 1 listeners: - name: plain diff --git a/examples/kafka/kafka-persistent.yaml b/examples/kafka/kafka-persistent.yaml index 7db55642b16..d386d7ca0ab 100644 --- a/examples/kafka/kafka-persistent.yaml +++ b/examples/kafka/kafka-persistent.yaml @@ -4,7 +4,7 @@ metadata: name: my-cluster spec: kafka: - version: 3.6.0 + version: 3.6.1 replicas: 3 listeners: - name: plain diff --git a/examples/kafka/nodepools/kafka-with-dual-role-kraft-nodes.yaml b/examples/kafka/nodepools/kafka-with-dual-role-kraft-nodes.yaml index 1014bbf3035..e8fb93ea4e7 100644 --- a/examples/kafka/nodepools/kafka-with-dual-role-kraft-nodes.yaml +++ b/examples/kafka/nodepools/kafka-with-dual-role-kraft-nodes.yaml @@ -27,7 +27,8 @@ metadata: strimzi.io/kraft: enabled spec: kafka: - version: 3.6.0 + version: 3.6.1 + metadataVersion: 3.6-IV2 # The replicas field is required by the Kafka CRD schema while the KafkaNodePools feature gate is in alpha phase. # But it will be ignored when Kafka Node Pools are used replicas: 3 diff --git a/examples/kafka/nodepools/kafka-with-kraft-ephemeral.yaml b/examples/kafka/nodepools/kafka-with-kraft-ephemeral.yaml index 588ff685625..a142b4f5c7a 100644 --- a/examples/kafka/nodepools/kafka-with-kraft-ephemeral.yaml +++ b/examples/kafka/nodepools/kafka-with-kraft-ephemeral.yaml @@ -35,7 +35,8 @@ metadata: strimzi.io/kraft: enabled spec: kafka: - version: 3.6.0 + version: 3.6.1 + metadataVersion: 3.6-IV2 # The replicas field is required by the Kafka CRD schema while the KafkaNodePools feature gate is in alpha phase. # But it will be ignored when Kafka Node Pools are used replicas: 3 diff --git a/examples/kafka/nodepools/kafka-with-kraft.yaml b/examples/kafka/nodepools/kafka-with-kraft.yaml index ff3d6ed8a2c..03ecd347693 100644 --- a/examples/kafka/nodepools/kafka-with-kraft.yaml +++ b/examples/kafka/nodepools/kafka-with-kraft.yaml @@ -45,7 +45,8 @@ metadata: strimzi.io/kraft: enabled spec: kafka: - version: 3.6.0 + version: 3.6.1 + metadataVersion: 3.6-IV2 # The replicas field is required by the Kafka CRD schema while the KafkaNodePools feature gate is in alpha phase. # But it will be ignored when Kafka Node Pools are used replicas: 3 diff --git a/examples/kafka/nodepools/kafka.yaml b/examples/kafka/nodepools/kafka.yaml index 9f4bb58e3ad..1b1659447b6 100644 --- a/examples/kafka/nodepools/kafka.yaml +++ b/examples/kafka/nodepools/kafka.yaml @@ -44,7 +44,7 @@ metadata: strimzi.io/node-pools: enabled spec: kafka: - version: 3.6.0 + version: 3.6.1 # The replicas field is required by the Kafka CRD schema while the KafkaNodePools feature gate is in alpha phase. # But it will be ignored when Kafka Node Pools are used replicas: 3 diff --git a/examples/metrics/grafana-dashboards/strimzi-kafka-connect.json b/examples/metrics/grafana-dashboards/strimzi-kafka-connect.json index 0df9e3d9555..9a67e4a7a2c 100644 --- a/examples/metrics/grafana-dashboards/strimzi-kafka-connect.json +++ b/examples/metrics/grafana-dashboards/strimzi-kafka-connect.json @@ -48,9 +48,23 @@ "gnetId": null, "graphTooltip": 0, "id": null, - "iteration": 1687300079448, + "iteration": 1699891569664, "links": [], "panels": [ + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 46, + "panels": [], + "title": "Overview", + "type": "row" + }, { "cacheTimeout": null, "colorBackground": false, @@ -77,9 +91,9 @@ }, "gridPos": { "h": 7, - "w": 4, + "w": 6, "x": 0, - "y": 0 + "y": 1 }, "height": 250, "id": 26, @@ -122,7 +136,9 @@ { "expr": "sum(kafka_connect_worker_connector_count{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", "format": "time_series", + "interval": "", "intervalFactor": 2, + "legendFormat": "", "refId": "A", "step": 40 } @@ -166,9 +182,9 @@ }, "gridPos": { "h": 7, - "w": 4, - "x": 4, - "y": 0 + "w": 6, + "x": 6, + "y": 1 }, "id": 27, "interval": null, @@ -234,6 +250,7 @@ "dashLength": 10, "dashes": false, "datasource": "${DS_PROMETHEUS}", + "decimals": 0, "fieldConfig": { "defaults": { "custom": {} @@ -244,50 +261,64 @@ "fillGradient": 0, "gridPos": { "h": 7, - "w": 8, - "x": 8, - "y": 0 + "w": 12, + "x": 12, + "y": 1 }, "hiddenSeries": false, - "id": 28, + "id": 36, "legend": { + "alignAsTable": true, "avg": false, - "current": false, + "current": true, "max": false, "min": false, + "rightSide": true, "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, - "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, - "stack": true, + "stack": false, "steppedLine": false, "targets": [ { - "expr": "sum(rate(kafka_consumer_incoming_byte_total{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}[1m])) by (kubernetes_pod_name)", + "expr": "sum(kafka_consumer_connection_count{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", + "hide": false, "interval": "", - "legendFormat": "{{kubernetes_pod_name}}", + "legendFormat": "#consumer connections", "refId": "A" + }, + { + "expr": "sum(kafka_producer_connection_count{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", + "interval": "", + "legendFormat": "#producer connections", + "refId": "B" + }, + { + "expr": "sum(kafka_admin_client_connection_count{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", + "interval": "", + "legendFormat": "#admin connections", + "refId": "C" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "(Sink/Consumers) Incoming bytes per second", + "title": "Connection Count", "tooltip": { "shared": true, "sort": 0, @@ -303,11 +334,12 @@ }, "yaxes": [ { - "format": "Bps", - "label": "Bytes/sec", + "decimals": 0, + "format": "short", + "label": null, "logBase": 1, "max": null, - "min": "0", + "min": null, "show": true }, { @@ -330,30 +362,32 @@ "dashLength": 10, "dashes": false, "datasource": "${DS_PROMETHEUS}", + "description": "Bytes per second outgoing to Kafka from Connect worker. Includes data to internal topics.", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 1, + "fill": 10, "fillGradient": 0, "gridPos": { "h": 7, - "w": 8, - "x": 16, - "y": 0 + "w": 12, + "x": 0, + "y": 8 }, "hiddenSeries": false, "id": 29, "legend": { - "avg": false, - "current": false, + "alignAsTable": true, + "avg": true, + "current": true, "max": false, "min": false, "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, @@ -383,7 +417,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "(Source/Producers) Outgoing bytes per second", + "title": "(Source/Producers) Outgoing Bytes per Second", "tooltip": { "shared": true, "sort": 0, @@ -426,30 +460,32 @@ "dashLength": 10, "dashes": false, "datasource": "${DS_PROMETHEUS}", + "description": "Bytes per second incoming to Kafka Connect worker from Kafka. Includes data from internal topics.", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 1, + "fill": 10, "fillGradient": 0, "gridPos": { "h": 7, - "w": 6, - "x": 0, - "y": 7 + "w": 12, + "x": 12, + "y": 8 }, "hiddenSeries": false, - "id": 30, + "id": 28, "legend": { - "avg": false, - "current": false, + "alignAsTable": true, + "avg": true, + "current": true, "max": false, "min": false, "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, @@ -465,26 +501,21 @@ "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, - "span": 4, - "stack": false, + "stack": true, "steppedLine": false, "targets": [ { - "expr": "sum(rate(container_cpu_usage_seconds_total{namespace=\"$kubernetes_namespace\",pod=~\"$strimzi_connect_cluster_name-connect-.+\",container=\"$strimzi_connect_cluster_name-connect\"}[5m])) by (pod)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{pod}}", - "metric": "", - "refId": "A", - "step": 4 + "expr": "sum(rate(kafka_consumer_incoming_byte_total{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}[1m])) by (kubernetes_pod_name)", + "interval": "", + "legendFormat": "{{kubernetes_pod_name}}", + "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "CPU Usage", + "title": "(Sink/Consumers) Incoming Bytes per Second", "tooltip": { "shared": true, "sort": 0, @@ -500,11 +531,11 @@ }, "yaxes": [ { - "format": "short", - "label": "Cores", + "format": "Bps", + "label": "Bytes/sec", "logBase": 1, "max": null, - "min": null, + "min": "0", "show": true }, { @@ -522,171 +553,148 @@ } }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 15 + }, + "id": 50, + "panels": [], + "title": "Workers", + "type": "row" + }, + { + "datasource": null, "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { - "h": 7, - "w": 6, - "x": 6, - "y": 7 - }, - "hiddenSeries": false, - "id": 31, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "h": 4, + "w": 12, + "x": 0, + "y": 16 }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", + "id": 52, "options": { - "alertThreshold": true + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "showUnfilled": true }, - "percentage": false, "pluginVersion": "7.3.7", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, "targets": [ { - "expr": "sum (jvm_memory_bytes_used{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (kubernetes_pod_name)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, + "expr": "sum(kafka_connect_coordinator_assigned_connectors{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (kubernetes_pod_name)", + "interval": "", "legendFormat": "{{kubernetes_pod_name}}", - "metric": "", - "refId": "A", - "step": 4 + "refId": "A" } ], - "thresholds": [], "timeFrom": null, - "timeRegions": [], "timeShift": null, - "title": "JVM Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": "Memory", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "title": "Assigned Connectors by Worker", + "type": "bargauge" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, - "datasource": "${DS_PROMETHEUS}", + "datasource": null, "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "mappings": [], + "max": 1, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { - "h": 7, - "w": 6, + "h": 8, + "w": 12, "x": 12, - "y": 7 + "y": 16 }, "hiddenSeries": false, - "id": 32, + "id": 56, "legend": { "avg": false, "current": false, "max": false, "min": false, - "show": true, + "show": false, "total": false, "values": false }, "lines": true, "linewidth": 1, - "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, - "span": 4, "stack": false, "steppedLine": false, "targets": [ { - "expr": "sum(rate(jvm_gc_collection_seconds_sum{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}[5m])) by (kubernetes_pod_name)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{kubernetes_pod_name}}", - "metric": "", - "refId": "A", - "step": 4 + "expr": "sum(kafka_connect_worker_rebalance_rebalancing{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", + "interval": "", + "legendFormat": "", + "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Time spent in GC", + "title": "Rebalancing", "tooltip": { "shared": true, "sort": 0, @@ -702,11 +710,12 @@ }, "yaxes": [ { - "format": "percent", - "label": "% time in GC", + "decimals": 0, + "format": "none", + "label": null, "logBase": 1, - "max": null, - "min": null, + "max": "1", + "min": "0", "show": true }, { @@ -724,124 +733,118 @@ } }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "description": "JVM thread count", + "datasource": null, "fieldConfig": { "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 6, - "x": 18, - "y": 7 - }, - "hiddenSeries": false, - "id": 37, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "custom": {}, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", + "gridPos": { + "h": 4, + "w": 12, + "x": 0, + "y": 20 + }, + "id": 54, "options": { - "alertThreshold": true + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "showUnfilled": true }, - "paceLength": 10, - "percentage": false, "pluginVersion": "7.3.7", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { - "expr": "sum(jvm_threads_current{namespace=\"$kubernetes_namespace\",strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (kubernetes_pod_name)", - "format": "time_series", - "intervalFactor": 1, + "expr": "sum(kafka_connect_coordinator_assigned_tasks{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (kubernetes_pod_name)", + "interval": "", "legendFormat": "{{kubernetes_pod_name}}", "refId": "A" } ], - "thresholds": [], "timeFrom": null, - "timeRegions": [], "timeShift": null, - "title": "JVM Thread Count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] + "title": "Assigned Tasks per Worker", + "type": "bargauge" + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 24 }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "id": 48, + "panels": [], + "title": "Connectors and Tasks", + "type": "row" }, { "cacheTimeout": null, "columns": [], "datasource": "${DS_PROMETHEUS}", + "description": "Connectors that have one or more tasks that are not in a running state, i.e. the state is one of paused, failed, unassigned or destroyed.", "fieldConfig": { "defaults": { - "custom": {} + "custom": { + "align": null, + "filterable": false + }, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } }, "overrides": [] }, "fontSize": "100%", "gridPos": { - "h": 7, - "w": 8, + "h": 9, + "w": 12, "x": 0, - "y": 14 + "y": 25 }, "id": 34, "links": [], + "options": { + "frameIndex": 1, + "showHeader": true + }, "pageSize": null, + "pluginVersion": "7.3.7", "showHeader": true, "sort": { "col": 0, @@ -891,35 +894,67 @@ "targets": [ { "expr": "sum(kafka_connect_worker_connector_paused_task_count{namespace=\"$kubernetes_namespace\",strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (connector) != 0", + "format": "table", "instant": true, "interval": "", - "legendFormat": "[paused] {{connector}}", - "refId": "B" + "legendFormat": "", + "refId": "A" }, { "expr": "sum(kafka_connect_worker_connector_failed_task_count{namespace=\"$kubernetes_namespace\",strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (connector) != 0", + "format": "table", "instant": true, "interval": "", - "legendFormat": "[failed] {{connector}}", - "refId": "A" + "legendFormat": "", + "refId": "B" }, { "expr": "sum(kafka_connect_worker_connector_unassigned_task_count{namespace=\"$kubernetes_namespace\",strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (connector) != 0", + "format": "table", "instant": true, "interval": "", - "legendFormat": "[unassigned] {{connector}}", + "legendFormat": "", "refId": "C" }, { "expr": "sum(kafka_connect_worker_connector_destroyed_task_count{namespace=\"$kubernetes_namespace\",strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (connector) != 0", + "format": "table", "instant": true, "interval": "", - "legendFormat": "[destroyed] {{connector}}", + "legendFormat": "", "refId": "D" } ], - "title": "Connector task state with issues", + "title": "Connector Tasks with Issues", "transform": "timeseries_to_rows", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "Time": 5, + "Value #A": 1, + "Value #B": 2, + "Value #C": 3, + "Value #D": 4, + "connector": 0 + }, + "renameByName": { + "Time": "Update Time", + "Value #A": "Paused Tasks", + "Value #B": "Failed Tasks", + "Value #C": "Unassigned Tasks", + "Value #D": "Destroyed Tasks", + "connector": "Connector" + } + } + } + ], "type": "table" }, { @@ -928,6 +963,7 @@ "dashLength": 10, "dashes": false, "datasource": "${DS_PROMETHEUS}", + "decimals": 0, "fieldConfig": { "defaults": { "custom": {} @@ -937,21 +973,23 @@ "fill": 1, "fillGradient": 0, "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 14 + "h": 9, + "w": 12, + "x": 12, + "y": 25 }, "hiddenSeries": false, "id": 35, "legend": { + "alignAsTable": true, "avg": false, - "current": false, + "current": true, "max": false, "min": false, + "rightSide": true, "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, @@ -1013,7 +1051,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Connector task state", + "title": "Connector Task State", "tooltip": { "shared": true, "sort": 0, @@ -1052,115 +1090,6 @@ "alignLevel": null } }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 14 - }, - "hiddenSeries": false, - "id": 36, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.3.7", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(kafka_consumer_connection_count{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", - "hide": false, - "interval": "", - "legendFormat": "#consumer connections", - "refId": "A" - }, - { - "expr": "sum(kafka_producer_connection_count{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", - "interval": "", - "legendFormat": "#producer connections", - "refId": "B" - }, - { - "expr": "sum(kafka_admin_client_connection_count{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", - "interval": "", - "legendFormat": "#admin connections", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Connection count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 0, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, { "datasource": "${DS_PROMETHEUS}", "fieldConfig": { @@ -1170,7 +1099,7 @@ }, "custom": { "align": "left", - "displayMode": "color-text", + "displayMode": "auto", "filterable": false }, "mappings": [], @@ -1188,64 +1117,21 @@ ] } }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "status" - }, - "properties": [ - { - "id": "custom.displayMode", - "value": "color-background" - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Connector" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "text", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Time" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "text", - "mode": "fixed" - } - } - ] - } - ] + "overrides": [] }, "gridPos": { - "h": 8, - "w": 12, + "h": 7, + "w": 24, "x": 0, - "y": 22 + "y": 34 }, "id": 42, "options": { "showHeader": true, "sortBy": [ { - "desc": true, - "displayName": "Value #A" + "desc": false, + "displayName": "Connector" } ] }, @@ -1253,7 +1139,7 @@ "targets": [ { "exemplar": true, - "expr": "count by (status, connector) (kafka_connect_connector_status{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", + "expr": "sum(kafka_connect_connector_status{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"} * on(connector) group_left(connector_class) kafka_connect_connector_connector_class{} * on (connector) group_left(connector_version) kafka_connect_connector_connector_version{} * on (connector) group_left(connector_type) kafka_connect_connector_connector_type{}) by (connector, status, connector_class, kubernetes_pod_name, connector_version, connector_type)", "format": "table", "instant": true, "interval": "", @@ -1271,7 +1157,11 @@ "names": [ "Time", "connector", - "status" + "kubernetes_pod_name", + "status", + "connector_class", + "connector_type", + "connector_version" ] } } @@ -1281,13 +1171,21 @@ "options": { "excludeByName": {}, "indexByName": { - "Time": 2, + "Time": 6, "connector": 0, - "status": 1 + "connector_class": 2, + "connector_type": 3, + "connector_version": 4, + "kubernetes_pod_name": 1, + "status": 5 }, "renameByName": { "Time": "Update Time", "connector": "Connector", + "connector_class": "Class", + "connector_type": "Type", + "connector_version": "Version", + "kubernetes_pod_name": "Worker Pod Name", "status": "Status" } } @@ -1326,12 +1224,24 @@ { "matcher": { "id": "byName", - "options": "status" + "options": "Task" + }, + "properties": [ + { + "id": "custom.align", + "value": "left" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total Record Failures" }, "properties": [ { - "id": "custom.displayMode", - "value": "color-background" + "id": "custom.align", + "value": "left" } ] } @@ -1339,19 +1249,25 @@ }, "gridPos": { "h": 8, - "w": 12, - "x": 12, - "y": 22 + "w": 24, + "x": 0, + "y": 41 }, "id": 41, "options": { - "showHeader": true + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "Connector" + } + ] }, "pluginVersion": "7.3.7", "targets": [ { "exemplar": true, - "expr": "count by (connector, task, status) (kafka_connect_connector_task_status{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", + "expr": "sum(kafka_connect_task_error_total_record_failures{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"} * on(connector, task) group_left(status) kafka_connect_connector_task_status{}) by (connector, status, kubernetes_pod_name, task)", "format": "table", "instant": true, "interval": "", @@ -1368,8 +1284,10 @@ "names": [ "Time", "connector", + "kubernetes_pod_name", "status", - "task" + "task", + "Value" ] } } @@ -1377,16 +1295,22 @@ { "id": "organize", "options": { - "excludeByName": {}, + "excludeByName": { + "connector": false + }, "indexByName": { - "Time": 3, + "Time": 5, + "Value": 3, "connector": 0, - "status": 2, + "kubernetes_pod_name": 2, + "status": 4, "task": 1 }, "renameByName": { "Time": "Update Time", + "Value": "Total Record Failures", "connector": "Connector", + "kubernetes_pod_name": "Worker Pod Name", "status": "Status", "task": "Task" } @@ -1394,6 +1318,429 @@ } ], "type": "table" + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 49 + }, + "id": 44, + "panels": [], + "title": "JVM", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 6, + "x": 0, + "y": 50 + }, + "hiddenSeries": false, + "id": 30, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(container_cpu_usage_seconds_total{namespace=\"$kubernetes_namespace\",pod=~\"$strimzi_connect_cluster_name-connect-.+\",container=\"$strimzi_connect_cluster_name-connect\"}[5m])) by (pod)", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{pod}}", + "metric": "", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Usage", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "Cores", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 6, + "x": 6, + "y": 50 + }, + "hiddenSeries": false, + "id": 31, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum (jvm_memory_bytes_used{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (kubernetes_pod_name)", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "JVM Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "Memory", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 5, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 6, + "x": 12, + "y": 50 + }, + "hiddenSeries": false, + "id": 32, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": true, + "min": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(jvm_gc_collection_seconds_sum{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}[5m])) by (kubernetes_pod_name)", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time Spent in GC", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": null, + "format": "percent", + "label": "% time in GC", + "logBase": 1, + "max": "100", + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 0, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 6, + "x": 18, + "y": 50 + }, + "hiddenSeries": false, + "id": 37, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_threads_current{namespace=\"$kubernetes_namespace\",strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (kubernetes_pod_name)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{kubernetes_pod_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "JVM Thread Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } } ], "refresh": "5s", @@ -1501,5 +1848,5 @@ "timezone": "", "title": "Strimzi Kafka Connect", "uid": "39fb097dc2c5ebf8a7717cf78fc2f8f7", - "version": 3 + "version": 4 } diff --git a/examples/metrics/grafana-dashboards/strimzi-kafka-mirror-maker-2.json b/examples/metrics/grafana-dashboards/strimzi-kafka-mirror-maker-2.json index 3388a27b060..ef849b195fe 100644 --- a/examples/metrics/grafana-dashboards/strimzi-kafka-mirror-maker-2.json +++ b/examples/metrics/grafana-dashboards/strimzi-kafka-mirror-maker-2.json @@ -54,9 +54,23 @@ "gnetId": null, "graphTooltip": 0, "id": null, - "iteration": 1687300878687, + "iteration": 1701691745357, "links": [], "panels": [ + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 47, + "panels": [], + "title": "Overview", + "type": "row" + }, { "cacheTimeout": null, "colorBackground": false, @@ -85,7 +99,7 @@ "h": 4, "w": 4, "x": 0, - "y": 0 + "y": 1 }, "height": 250, "id": 26, @@ -174,7 +188,7 @@ "h": 4, "w": 4, "x": 4, - "y": 0 + "y": 1 }, "id": 37, "interval": null, @@ -252,18 +266,19 @@ "h": 8, "w": 8, "x": 8, - "y": 0 + "y": 1 }, "hiddenSeries": false, "id": 28, "legend": { - "avg": false, - "current": false, + "alignAsTable": true, + "avg": true, + "current": true, "max": false, "min": false, - "show": false, + "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, @@ -298,7 +313,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Incoming bytes", + "title": "Incoming Bytes per Second", "tooltip": { "shared": true, "sort": 0, @@ -353,18 +368,19 @@ "h": 8, "w": 8, "x": 16, - "y": 0 + "y": 1 }, "hiddenSeries": false, "id": 29, "legend": { - "avg": false, - "current": false, + "alignAsTable": true, + "avg": true, + "current": true, "max": false, "min": false, - "show": false, + "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, @@ -399,7 +415,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Outgoing bytes", + "title": "Outgoing Bytes per Second", "tooltip": { "shared": true, "sort": 0, @@ -477,7 +493,7 @@ "h": 4, "w": 4, "x": 0, - "y": 4 + "y": 5 }, "id": 27, "interval": null, @@ -490,7 +506,7 @@ "orientation": "horizontal", "reduceOptions": { "calcs": [ - "mean" + "lastNotNull" ], "fields": "", "values": false @@ -503,7 +519,9 @@ { "expr": "sum(kafka_connect_worker_task_count{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"})", "format": "time_series", + "interval": "", "intervalFactor": 2, + "legendFormat": "", "refId": "A", "step": 40 } @@ -567,7 +585,7 @@ "h": 4, "w": 4, "x": 4, - "y": 4 + "y": 5 }, "id": 38, "interval": null, @@ -655,56 +673,51 @@ "fill": 1, "fillGradient": 0, "gridPos": { - "h": 7, + "h": 8, "w": 8, "x": 0, - "y": 8 + "y": 9 }, "hiddenSeries": false, - "id": 30, + "id": 43, "legend": { + "alignAsTable": true, "avg": false, - "current": false, + "current": true, "max": false, "min": false, "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, - "links": [], - "nullPointMode": "null", + "nullPointMode": "null as zero", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, - "span": 4, "stack": false, "steppedLine": false, "targets": [ { - "expr": "sum(rate(container_cpu_usage_seconds_total{namespace=\"$kubernetes_namespace\",pod=~\"$strimzi_mirror_maker_cluster_name-mirrormaker2-.+\",container=\"$strimzi_mirror_maker_cluster_name-mirrormaker2\"}[5m])) by (pod)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{pod}}", - "metric": "", - "refId": "A", - "step": 4 + "expr": "sum(kafka_connect_source_task_source_record_active_count{connector=~\"\\\".*SourceConnector\\\"\"})", + "interval": "", + "legendFormat": "", + "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "CPU Usage", + "title": "Source Connector - Connect Outstanding Messages Queue", "tooltip": { "shared": true, "sort": 0, @@ -720,8 +733,9 @@ }, "yaxes": [ { + "decimals": 0, "format": "short", - "label": "Cores", + "label": "msgs", "logBase": 1, "max": null, "min": null, @@ -756,56 +770,51 @@ "fill": 1, "fillGradient": 0, "gridPos": { - "h": 7, + "h": 8, "w": 8, "x": 8, - "y": 8 + "y": 9 }, "hiddenSeries": false, - "id": 31, + "id": 44, "legend": { + "alignAsTable": true, "avg": false, - "current": false, + "current": true, "max": false, "min": false, "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, - "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, - "span": 4, "stack": false, "steppedLine": false, "targets": [ { - "expr": "sum(jvm_memory_bytes_used{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (kubernetes_pod_name)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{kubernetes_pod_name}}", - "metric": "", - "refId": "A", - "step": 4 + "expr": "sum(kafka_producer_buffer_available_bytes{clientid=~\"\\\".*SourceConnector-[0-9]+\\\"\"})", + "interval": "", + "legendFormat": "{{clientid}}", + "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "JVM Memory", + "title": "Source Connector - Producer Available Buffer", "tooltip": { "shared": true, "sort": 0, @@ -821,8 +830,8 @@ }, "yaxes": [ { - "format": "bytes", - "label": "Memory", + "format": "short", + "label": "bytes", "logBase": 1, "max": null, "min": null, @@ -848,6 +857,7 @@ "dashLength": 10, "dashes": false, "datasource": "${DS_PROMETHEUS}", + "decimals": 0, "fieldConfig": { "defaults": { "custom": {} @@ -857,56 +867,51 @@ "fill": 1, "fillGradient": 0, "gridPos": { - "h": 7, + "h": 8, "w": 8, "x": 16, - "y": 8 + "y": 9 }, "hiddenSeries": false, - "id": 32, + "id": 45, "legend": { + "alignAsTable": true, "avg": false, - "current": false, + "current": true, "max": false, "min": false, "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, - "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, - "span": 4, "stack": false, "steppedLine": false, "targets": [ { - "expr": "sum(rate(jvm_gc_collection_seconds_sum{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}[5m])) by (kubernetes_pod_name)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{kubernetes_pod_name}}", - "metric": "", - "refId": "A", - "step": 4 + "expr": "sum(kafka_connect_connector_task_offset_commit_avg_time_ms{connector=~\"\\\".*SourceConnector\\\"\", task=~\"[0-9]+\"})/count(kafka_connect_connector_task_offset_commit_avg_time_ms{connector=~\"\\\".*SourceConnector\\\"\", task=~\"[0-9]+\"})", + "interval": "", + "legendFormat": "", + "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Time spent in GC", + "title": "Source Connector - Average Offset Commit Time", "tooltip": { "shared": true, "sort": 0, @@ -922,8 +927,8 @@ }, "yaxes": [ { - "format": "percent", - "label": "% time in GC", + "format": "short", + "label": "ms", "logBase": 1, "max": null, "min": null, @@ -944,316 +949,248 @@ } }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto", + "filterable": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" }, - "overrides": [] + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "partition" + }, + "properties": [ + { + "id": "custom.width", + "value": 76 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Partition" + }, + "properties": [ + { + "id": "custom.width", + "value": 76 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Current" + }, + "properties": [ + { + "id": "custom.width", + "value": 65 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Average" + }, + "properties": [ + { + "id": "custom.width", + "value": 70 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min" + }, + "properties": [ + { + "id": "custom.width", + "value": 45 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max" + }, + "properties": [ + { + "id": "custom.width", + "value": 41 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Time" + }, + "properties": [ + { + "id": "custom.width", + "value": 146 + } + ] + } + ] }, - "fill": 1, - "fillGradient": 0, "gridPos": { - "h": 8, - "w": 8, + "h": 10, + "w": 12, "x": 0, - "y": 15 - }, - "hiddenSeries": false, - "id": 43, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false + "y": 17 }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", + "id": 39, "options": { - "alertThreshold": true + "frameIndex": 0, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "Time" + } + ] }, - "percentage": false, "pluginVersion": "7.3.7", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { - "expr": "sum(kafka_connect_source_task_source_record_active_count{connector=~\"\\\".*SourceConnector\\\"\"})", + "exemplar": false, + "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_record_age_ms{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "format": "table", + "instant": true, "interval": "", - "legendFormat": "{{connector}}", + "legendFormat": "", "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Source Connector - Connect Outstanding Messages Queue", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ + }, { - "format": "short", - "label": "msgs", - "logBase": 1, - "max": null, - "min": null, - "show": true + "exemplar": true, + "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_record_age_ms_avg{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "B" }, { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "fieldConfig": { - "defaults": { - "custom": {} + "exemplar": true, + "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_record_age_ms_min{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "C" }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 8, - "x": 8, - "y": 15 - }, - "hiddenSeries": false, - "id": 44, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.3.7", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ { - "expr": "sum(kafka_producer_buffer_available_bytes{clientid=~\"\\\".*SourceConnector-[0-9]+\\\"\"})", + "exemplar": true, + "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_record_age_ms_max{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "format": "table", + "hide": false, + "instant": true, "interval": "", - "legendFormat": "{{clientid}}", - "refId": "A" + "legendFormat": "", + "refId": "D" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Source Connector - Producer Available Buffer", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ + "title": "Record Age", + "transformations": [ { - "format": "short", - "label": "bytes", - "logBase": 1, - "max": null, - "min": null, - "show": true + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "Time": 0, + "Value": 3, + "partition": 2, + "topic": 1 + }, + "renameByName": { + "Value": "Lag", + "partition": "Partition", + "topic": "Topic" + } + } }, { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": {}, + "renameByName": { + "Value #A": "Current", + "Value #Avg": "Average", + "Value #B": "Average", + "Value #C": "Min", + "Value #D": "Max", + "partition": "Partition", + "topic": "Topic", + "{partition=\"2\", topic=\"my-cluster-source.kafka-test-apps\"}": "Min" + } + } } ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "table" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 8, - "x": 16, - "y": 15 - }, - "hiddenSeries": false, - "id": 45, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.3.7", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(kafka_connect_connector_task_offset_commit_avg_time_ms{connector=~\"\\\".*SourceConnector\\\"\", task=~\"[0-9]+\"})/count(kafka_connect_connector_task_offset_commit_avg_time_ms{connector=~\"\\\".*SourceConnector\\\"\", task=~\"[0-9]+\"})", - "interval": "", - "legendFormat": "{{connector}}-{{task}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Source Connector - Average Offset Commit Time", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "ms", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "datasource": "${DS_PROMETHEUS}", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "auto", - "displayMode": "auto", - "filterable": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto", + "filterable": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } }, "overrides": [ { @@ -1336,19 +1273,19 @@ "properties": [ { "id": "custom.width", - "value": 146 + "value": 155 } ] } ] }, "gridPos": { - "h": 10, + "h": 5, "w": 12, - "x": 0, - "y": 23 + "x": 12, + "y": 17 }, - "id": 39, + "id": 40, "options": { "frameIndex": 0, "showHeader": true, @@ -1363,7 +1300,7 @@ "targets": [ { "exemplar": false, - "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_record_age_ms{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_replication_latency_ms{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", "format": "table", "instant": true, "interval": "", @@ -1372,7 +1309,7 @@ }, { "exemplar": true, - "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_record_age_ms_avg{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_replication_latency_ms_avg{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", "format": "table", "hide": false, "instant": true, @@ -1382,7 +1319,7 @@ }, { "exemplar": true, - "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_record_age_ms_min{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_replication_latency_ms_min{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", "format": "table", "hide": false, "instant": true, @@ -1392,7 +1329,7 @@ }, { "exemplar": true, - "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_record_age_ms_max{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_replication_latency_ms_max{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", "format": "table", "hide": false, "instant": true, @@ -1401,7 +1338,7 @@ "refId": "D" } ], - "title": "Record Age", + "title": "Replication Latency", "transformations": [ { "id": "organize", @@ -1555,6 +1492,18 @@ "value": 155 } ] + }, + { + "matcher": { + "id": "byName", + "options": "Source" + }, + "properties": [ + { + "id": "custom.width", + "value": 267 + } + ] } ] }, @@ -1562,9 +1511,9 @@ "h": 5, "w": 12, "x": 12, - "y": 23 + "y": 22 }, - "id": 40, + "id": 41, "options": { "frameIndex": 0, "showHeader": true, @@ -1579,7 +1528,7 @@ "targets": [ { "exemplar": false, - "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_replication_latency_ms{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "expr": "sum(kafka_connect_mirror_mirrorcheckpointconnector_checkpoint_latency_ms{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (source, target)", "format": "table", "instant": true, "interval": "", @@ -1588,7 +1537,7 @@ }, { "exemplar": true, - "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_replication_latency_ms_avg{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "expr": "sum(kafka_connect_mirror_mirrorcheckpointconnector_checkpoint_latency_ms_avg{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (source, target)", "format": "table", "hide": false, "instant": true, @@ -1598,7 +1547,7 @@ }, { "exemplar": true, - "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_replication_latency_ms_min{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "expr": "sum(kafka_connect_mirror_mirrorcheckpointconnector_checkpoint_latency_ms_min{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (source, target)", "format": "table", "hide": false, "instant": true, @@ -1608,7 +1557,7 @@ }, { "exemplar": true, - "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_replication_latency_ms_max{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "expr": "sum(kafka_connect_mirror_mirrorcheckpointconnector_checkpoint_latency_ms_max{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (source, target)", "format": "table", "hide": false, "instant": true, @@ -1617,7 +1566,7 @@ "refId": "D" } ], - "title": "Replication Latency", + "title": "Offset Synchronization Latency", "transformations": [ { "id": "organize", @@ -1652,6 +1601,8 @@ "Value #C": "Min", "Value #D": "Max", "partition": "Partition", + "source": "Source", + "target": "Target", "topic": "Topic", "{partition=\"2\", topic=\"my-cluster-source.kafka-test-apps\"}": "Min" } @@ -1660,6 +1611,102 @@ ], "type": "table" }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 34, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(kafka_consumer_fetch_manager_records_lag{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\",clientid!~\"consumer-mirrormaker2-.*\"}) by (topic, partition)", + "interval": "", + "legendFormat": "{{topic}} (partition: {{partition}})", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Consumer Lag", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, { "datasource": "${DS_PROMETHEUS}", "fieldConfig": { @@ -1687,208 +1734,494 @@ ] } }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "partition" + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 27 + }, + "id": 36, + "options": { + "showHeader": true + }, + "pluginVersion": "7.3.7", + "targets": [ + { + "exemplar": true, + "expr": "sum(kafka_consumer_fetch_manager_records_lag{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\",clientid!~\"consumer-mirrormaker2-.*\"}) by (partition, topic)", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "{{topic}} (partition: {{partition}})", + "refId": "A" + } + ], + "title": "Consumer Lag", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "Time": 0, + "Value": 3, + "partition": 2, + "topic": 1 }, - "properties": [ - { - "id": "custom.width", - "value": 76 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Partition" - }, - "properties": [ - { - "id": "custom.width", - "value": 76 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Current" - }, - "properties": [ - { - "id": "custom.width", - "value": 65 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Average" - }, - "properties": [ - { - "id": "custom.width", - "value": 70 - } - ] + "renameByName": { + "Value": "Lag", + "partition": "Partition", + "topic": "Topic" + } + } + } + ], + "type": "table" + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 36 + }, + "id": 53, + "panels": [], + "title": "Workers", + "type": "row" + }, + { + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": { + "align": null, + "filterable": false }, - { - "matcher": { - "id": "byName", - "options": "Min" - }, - "properties": [ + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ { - "id": "custom.width", - "value": 45 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Max" - }, - "properties": [ + "color": "green", + "value": null + }, { - "id": "custom.width", - "value": 41 + "color": "red", + "value": 80 } ] - }, - { - "matcher": { - "id": "byName", - "options": "Time" - }, - "properties": [ + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 12, + "x": 0, + "y": 37 + }, + "id": 55, + "options": { + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true + }, + "pluginVersion": "7.3.7", + "targets": [ + { + "expr": "sum(kafka_connect_coordinator_assigned_connectors{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (kubernetes_pod_name)", + "format": "time_series", + "instant": false, + "interval": "", + "legendFormat": "{{kubernetes_pod_name}}", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Assigned Connectors per Worker", + "type": "bargauge" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 37 + }, + "hiddenSeries": false, + "id": 59, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(kafka_connect_worker_rebalance_rebalancing{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"})", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Rebalancing", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": null, + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {}, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ { - "id": "custom.width", - "value": 155 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Source" - }, - "properties": [ + "color": "green", + "value": null + }, { - "id": "custom.width", - "value": 267 + "color": "red", + "value": 80 } ] } - ] + }, + "overrides": [] }, "gridPos": { - "h": 5, + "h": 3, "w": 12, - "x": 12, - "y": 28 + "x": 0, + "y": 40 }, - "id": 41, + "id": 57, "options": { - "frameIndex": 0, - "showHeader": true, - "sortBy": [ - { - "desc": false, - "displayName": "Time" - } - ] + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true }, "pluginVersion": "7.3.7", "targets": [ { - "exemplar": false, - "expr": "sum(kafka_connect_mirror_mirrorcheckpointconnector_checkpoint_latency_ms{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (source, target)", - "format": "table", - "instant": true, + "expr": "sum(kafka_connect_coordinator_assigned_tasks{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (kubernetes_pod_name)", "interval": "", - "legendFormat": "", + "legendFormat": "{{kubernetes_pod_name}}", "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Assigned Tasks per Worker", + "type": "bargauge" + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 43 + }, + "id": 51, + "panels": [], + "title": "JVM", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 6, + "x": 0, + "y": 44 + }, + "hiddenSeries": false, + "id": 30, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ { - "exemplar": true, - "expr": "sum(kafka_connect_mirror_mirrorcheckpointconnector_checkpoint_latency_ms_avg{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (source, target)", - "format": "table", + "expr": "sum(rate(container_cpu_usage_seconds_total{namespace=\"$kubernetes_namespace\",pod=~\"$strimzi_mirror_maker_cluster_name-mirrormaker2-.+\",container=\"$strimzi_mirror_maker_cluster_name-mirrormaker2\"}[5m])) by (pod)", + "format": "time_series", "hide": false, - "instant": true, - "interval": "", - "legendFormat": "", - "refId": "B" + "intervalFactor": 2, + "legendFormat": "{{pod}}", + "metric": "", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Usage", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "Cores", + "logBase": 1, + "max": null, + "min": null, + "show": true }, { - "exemplar": true, - "expr": "sum(kafka_connect_mirror_mirrorcheckpointconnector_checkpoint_latency_ms_min{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (source, target)", - "format": "table", - "hide": false, - "instant": true, - "interval": "", - "legendFormat": "", - "refId": "C" + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 6, + "x": 6, + "y": 44 + }, + "hiddenSeries": false, + "id": 31, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ { - "exemplar": true, - "expr": "sum(kafka_connect_mirror_mirrorcheckpointconnector_checkpoint_latency_ms_max{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (source, target)", - "format": "table", + "expr": "sum(jvm_memory_bytes_used{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (kubernetes_pod_name)", + "format": "time_series", "hide": false, - "instant": true, - "interval": "", - "legendFormat": "", - "refId": "D" + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "", + "refId": "A", + "step": 4 } ], - "title": "Offset Synchronization Latency", - "transformations": [ - { - "id": "organize", - "options": { - "excludeByName": {}, - "indexByName": { - "Time": 0, - "Value": 3, - "partition": 2, - "topic": 1 - }, - "renameByName": { - "Value": "Lag", - "partition": "Partition", - "topic": "Topic" - } - } - }, + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "JVM Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ { - "id": "merge", - "options": {} + "format": "bytes", + "label": "Memory", + "logBase": 1, + "max": null, + "min": null, + "show": true }, { - "id": "organize", - "options": { - "excludeByName": {}, - "indexByName": {}, - "renameByName": { - "Value #A": "Current", - "Value #Avg": "Average", - "Value #B": "Average", - "Value #C": "Min", - "Value #D": "Max", - "partition": "Partition", - "source": "Source", - "target": "Target", - "topic": "Topic", - "{partition=\"2\", topic=\"my-cluster-source.kafka-test-apps\"}": "Min" - } - } + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true } ], - "type": "table" + "yaxis": { + "align": false, + "alignLevel": null + } }, { "aliasColors": {}, @@ -1905,51 +2238,58 @@ "fill": 1, "fillGradient": 0, "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 33 + "h": 7, + "w": 6, + "x": 12, + "y": 44 }, "hiddenSeries": false, - "id": 34, + "id": 32, "legend": { + "alignAsTable": true, "avg": false, - "current": false, - "max": false, + "current": true, + "max": true, "min": false, "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, + "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", - "pointradius": 2, + "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, + "span": 4, "stack": false, "steppedLine": false, "targets": [ { - "exemplar": true, - "expr": "sum(kafka_consumer_fetch_manager_records_lag{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\",clientid!~\"consumer-mirrormaker2-.*\"}) by (topic, partition)", + "expr": "sum(rate(jvm_gc_collection_seconds_sum{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}[5m])) by (kubernetes_pod_name)", + "format": "time_series", + "hide": false, "interval": "", - "legendFormat": "{{topic}} (partition: {{partition}})", - "refId": "A" + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "", + "refId": "A", + "step": 4 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Consumer Lag", + "title": "Time Spent in GC", "tooltip": { "shared": true, "sort": 0, @@ -1965,10 +2305,10 @@ }, "yaxes": [ { - "format": "short", - "label": null, + "format": "percent", + "label": "% time in GC", "logBase": 1, - "max": null, + "max": "100", "min": null, "show": true }, @@ -1987,77 +2327,103 @@ } }, { - "datasource": "${DS_PROMETHEUS}", + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, "fieldConfig": { "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "auto", - "displayMode": "auto", - "filterable": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } + "custom": {} }, "overrides": [] }, + "fill": 1, + "fillGradient": 0, "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 33 + "h": 7, + "w": 6, + "x": 18, + "y": 44 }, - "id": 36, + "hiddenSeries": false, + "id": 49, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", "options": { - "showHeader": true + "alertThreshold": true }, + "percentage": false, "pluginVersion": "7.3.7", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "exemplar": true, - "expr": "sum(kafka_consumer_fetch_manager_records_lag{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\",clientid!~\"consumer-mirrormaker2-.*\"}) by (partition, topic)", - "format": "table", - "instant": true, + "expr": "sum(jvm_threads_current{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (kubernetes_pod_name)", + "instant": false, "interval": "", - "legendFormat": "{{topic}} (partition: {{partition}})", + "legendFormat": "{{kubernetes_pod_name}}", "refId": "A" } ], - "title": "Consumer Lag", - "transformations": [ + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "JVM Thread Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ { - "id": "organize", - "options": { - "excludeByName": {}, - "indexByName": { - "Time": 0, - "Value": 3, - "partition": 2, - "topic": 1 - }, - "renameByName": { - "Value": "Lag", - "partition": "Partition", - "topic": "Topic" - } - } + "decimals": 0, + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "decimals": null, + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true } ], - "type": "table" + "yaxis": { + "align": false, + "alignLevel": null + } } ], "refresh": "5s", @@ -2171,5 +2537,5 @@ "timezone": "", "title": "Strimzi Kafka Mirror Maker 2", "uid": "spCQwc0mz", - "version": 7 + "version": 8 } diff --git a/examples/metrics/kafka-connect-metrics.yaml b/examples/metrics/kafka-connect-metrics.yaml index b443f2bd8f2..43985600a5e 100644 --- a/examples/metrics/kafka-connect-metrics.yaml +++ b/examples/metrics/kafka-connect-metrics.yaml @@ -5,7 +5,7 @@ metadata: labels: app: my-connect-cluster spec: - version: 3.6.0 + version: 3.6.1 replicas: 1 bootstrapServers: my-cluster-kafka-bootstrap:9092 metricsConfig: @@ -49,36 +49,34 @@ data: help: "Kafka $1 JMX metric info version and commit-id" type: GAUGE - #kafka.producer:type=producer-topic-metrics,client-id="{clientid}",topic="{topic}"", partition="{partition}" #kafka.consumer:type=consumer-fetch-manager-metrics,client-id="{clientid}",topic="{topic}"", partition="{partition}" - - pattern: kafka.(.+)<>(.+-total|compression-rate|.+-avg|.+-replica|.+-lag|.+-lead) - name: kafka_$2_$6 + - pattern: kafka.consumer<>(.+-total|compression-rate|.+-avg|.+-replica|.+-lag|.+-lead) + name: kafka_consumer_fetch_manager_$4 labels: - clientId: "$3" - topic: "$4" - partition: "$5" - help: "Kafka $1 JMX metric type $2" + clientId: "$1" + topic: "$2" + partition: "$3" + help: "Kafka Consumer JMX metric type consumer-fetch-manager-metrics" type: GAUGE #kafka.producer:type=producer-topic-metrics,client-id="{clientid}",topic="{topic}" - #kafka.consumer:type=consumer-fetch-manager-metrics,client-id="{clientid}",topic="{topic}"", partition="{partition}" - - pattern: kafka.(.+)<>(.+-total|compression-rate|.+-avg) - name: kafka_$2_$5 + - pattern: kafka.producer<>(.+-total|compression-rate|.+-avg|.+rate) + name: kafka_producer_topic_$3 labels: - clientId: "$3" - topic: "$4" - help: "Kafka $1 JMX metric type $2" + clientId: "$1" + topic: "$2" + help: "Kafka Producer JMX metric type producer-topic-metrics" type: GAUGE #kafka.connect:type=connect-node-metrics,client-id="{clientid}",node-id="{nodeid}" #kafka.consumer:type=consumer-node-metrics,client-id=consumer-1,node-id="{nodeid}" - - pattern: kafka.(.+)<>(.+-total|.+-avg) + - pattern: kafka.(.+)<>(.+-total|.+-avg|.+-rate) name: kafka_$2_$5 labels: clientId: "$3" nodeId: "$4" help: "Kafka $1 JMX metric type $2" - type: UNTYPED + type: GAUGE #kafka.connect:type=kafka-metrics-count,client-id="{clientid}" #kafka.consumer:type=consumer-fetch-manager-metrics,client-id="{clientid}" @@ -92,13 +90,13 @@ data: type: GAUGE #kafka.connect:type=connector-metrics,connector="{connector}" - - pattern: 'kafka.(.+)<>(connector-class|connector-type|connector-version|status): (.+)' - name: kafka_connect_connector_$3 + - pattern: 'kafka.connect<>(connector-class|connector-type|connector-version|status): (.+)' + name: kafka_connect_connector_$2 value: 1 labels: - connector: "$2" - $3: "$4" - help: "Kafka Connect $3 JMX metric type connector" + connector: "$1" + $2: "$3" + help: "Kafka Connect $2 JMX metric type connector" type: GAUGE #kafka.connect:type=connector-task-metrics,connector="{connector}",task="{task}<> status" @@ -124,7 +122,6 @@ data: help: "Kafka Connect JMX metric type $1" type: GAUGE - #kafka.connect:type=connector-metrics,connector="{connector}" #kafka.connect:type=connect-worker-metrics,connector="{connector}" - pattern: kafka.connect<>([a-z-]+) name: kafka_connect_worker_$2 @@ -139,8 +136,23 @@ data: help: "Kafka Connect JMX metric worker" type: GAUGE + #kafka.connect:type=connect-worker-rebalance-metrics,leader-name|connect-protocol + - pattern: 'kafka.connect<>(leader-name|connect-protocol): (.+)' + name: kafka_connect_worker_rebalance_$1 + value: 1 + labels: + $1: "$2" + help: "Kafka Connect $2 JMX metric type worker rebalance" + type: UNTYPED + #kafka.connect:type=connect-worker-rebalance-metrics - pattern: kafka.connect<>([a-z-]+) name: kafka_connect_worker_rebalance_$1 help: "Kafka Connect JMX metric rebalance information" type: GAUGE + + #kafka.connect:type=connect-coordinator-metrics + - pattern: kafka.connect<>(assigned-connectors|assigned-tasks) + name: kafka_connect_coordinator_$1 + help: "Kafka Connect JMX metric assignment information" + type: GAUGE diff --git a/examples/metrics/kafka-cruise-control-metrics.yaml b/examples/metrics/kafka-cruise-control-metrics.yaml index 6f234f341de..e2cfcfc5be3 100644 --- a/examples/metrics/kafka-cruise-control-metrics.yaml +++ b/examples/metrics/kafka-cruise-control-metrics.yaml @@ -4,7 +4,7 @@ metadata: name: my-cluster spec: kafka: - version: 3.6.0 + version: 3.6.1 replicas: 3 listeners: - name: plain diff --git a/examples/metrics/kafka-metrics.yaml b/examples/metrics/kafka-metrics.yaml index 2202587bb9c..7b448131054 100644 --- a/examples/metrics/kafka-metrics.yaml +++ b/examples/metrics/kafka-metrics.yaml @@ -4,7 +4,7 @@ metadata: name: my-cluster spec: kafka: - version: 3.6.0 + version: 3.6.1 replicas: 3 listeners: - name: plain @@ -15,12 +15,6 @@ spec: port: 9093 type: internal tls: true - readinessProbe: - initialDelaySeconds: 15 - timeoutSeconds: 5 - livenessProbe: - initialDelaySeconds: 15 - timeoutSeconds: 5 config: offsets.topic.replication.factor: 3 transaction.state.log.replication.factor: 3 @@ -43,12 +37,6 @@ spec: key: kafka-metrics-config.yml zookeeper: replicas: 3 - readinessProbe: - initialDelaySeconds: 15 - timeoutSeconds: 5 - livenessProbe: - initialDelaySeconds: 15 - timeoutSeconds: 5 storage: type: persistent-claim size: 100Gi diff --git a/examples/metrics/kafka-mirror-maker-2-metrics.yaml b/examples/metrics/kafka-mirror-maker-2-metrics.yaml index e59dee314c1..d33a3751168 100644 --- a/examples/metrics/kafka-mirror-maker-2-metrics.yaml +++ b/examples/metrics/kafka-mirror-maker-2-metrics.yaml @@ -5,7 +5,7 @@ metadata: labels: app: my-mm2-cluster spec: - version: 3.6.0 + version: 3.6.1 replicas: 1 connectCluster: "my-cluster-target" clusters: diff --git a/examples/metrics/prometheus-install/prometheus-rules.yaml b/examples/metrics/prometheus-install/prometheus-rules.yaml index 7a93e32cb25..f8a66164ea9 100644 --- a/examples/metrics/prometheus-install/prometheus-rules.yaml +++ b/examples/metrics/prometheus-install/prometheus-rules.yaml @@ -246,7 +246,7 @@ spec: summary: 'Consumer group lag is too big' description: 'Consumer group {{ $labels.consumergroup}} lag is too big ({{ $value }}) on topic {{ $labels.topic }}/partition {{ $labels.partition }}' - alert: NoMessageForTooLong - expr: changes(kafka_topic_partition_current_offset{topic!="__consumer_offsets"}[10m]) == 0 + expr: changes(kafka_topic_partition_current_offset[10m]) == 0 for: 10s labels: severity: warning diff --git a/examples/mirror-maker/kafka-mirror-maker-2-custom-replication-policy.yaml b/examples/mirror-maker/kafka-mirror-maker-2-custom-replication-policy.yaml index 3327ad07437..9da71b394a7 100644 --- a/examples/mirror-maker/kafka-mirror-maker-2-custom-replication-policy.yaml +++ b/examples/mirror-maker/kafka-mirror-maker-2-custom-replication-policy.yaml @@ -3,7 +3,7 @@ kind: KafkaMirrorMaker2 metadata: name: my-mirror-maker-2 spec: - version: 3.6.0 + version: 3.6.1 replicas: 1 connectCluster: "cluster-b" # Must be the target custer clusters: @@ -27,11 +27,14 @@ spec: offset-syncs.topic.replication.factor: -1 sync.topic.acls.enabled: "false" replication.policy.class: "org.apache.kafka.connect.mirror.IdentityReplicationPolicy" + refresh.topics.interval.seconds: 600 checkpointConnector: tasksMax: 1 config: # -1 means it will use the default replication factor configured in the broker checkpoints.topic.replication.factor: -1 replication.policy.class: "org.apache.kafka.connect.mirror.IdentityReplicationPolicy" + sync.group.offsets.enabled: "false" + refresh.groups.interval.seconds: 600 topicsPattern: ".*" groupsPattern: ".*" diff --git a/examples/mirror-maker/kafka-mirror-maker-2-sync-groups.yaml b/examples/mirror-maker/kafka-mirror-maker-2-sync-groups.yaml index 40bf4dded2b..9b0536a9d02 100644 --- a/examples/mirror-maker/kafka-mirror-maker-2-sync-groups.yaml +++ b/examples/mirror-maker/kafka-mirror-maker-2-sync-groups.yaml @@ -3,7 +3,7 @@ kind: KafkaMirrorMaker2 metadata: name: my-mirror-maker-2 spec: - version: 3.6.0 + version: 3.6.1 replicas: 1 connectCluster: "cluster-b" # Must be the target custer clusters: @@ -26,10 +26,15 @@ spec: replication.factor: -1 offset-syncs.topic.replication.factor: -1 sync.topic.acls.enabled: "false" + refresh.topics.interval.seconds: 600 + offset.lag.max: 100 checkpointConnector: tasksMax: 1 config: checkpoints.topic.replication.factor: -1 sync.group.offsets.enabled: "true" + emit.checkpoints.interval.seconds: 60 + sync.group.offsets.interval.seconds: 60 + refresh.groups.interval.seconds: 600 topicsPattern: ".*" groupsPattern: ".*" diff --git a/examples/mirror-maker/kafka-mirror-maker-2-tls.yaml b/examples/mirror-maker/kafka-mirror-maker-2-tls.yaml index 4e5ed189cb2..6109be55c24 100644 --- a/examples/mirror-maker/kafka-mirror-maker-2-tls.yaml +++ b/examples/mirror-maker/kafka-mirror-maker-2-tls.yaml @@ -3,7 +3,7 @@ kind: KafkaMirrorMaker2 metadata: name: my-mirror-maker-2 spec: - version: 3.6.0 + version: 3.6.1 replicas: 1 connectCluster: "cluster-b" # Must be the target custer clusters: @@ -34,9 +34,12 @@ spec: replication.factor: -1 offset-syncs.topic.replication.factor: -1 sync.topic.acls.enabled: "false" + refresh.topics.interval.seconds: 600 checkpointConnector: tasksMax: 1 config: checkpoints.topic.replication.factor: -1 + sync.group.offsets.enabled: "false" + refresh.groups.interval.seconds: 600 topicsPattern: ".*" groupsPattern: ".*" diff --git a/examples/mirror-maker/kafka-mirror-maker-2.yaml b/examples/mirror-maker/kafka-mirror-maker-2.yaml index 3783a500b65..b941b4ea1b1 100644 --- a/examples/mirror-maker/kafka-mirror-maker-2.yaml +++ b/examples/mirror-maker/kafka-mirror-maker-2.yaml @@ -3,7 +3,7 @@ kind: KafkaMirrorMaker2 metadata: name: my-mirror-maker-2 spec: - version: 3.6.0 + version: 3.6.1 replicas: 1 connectCluster: "cluster-b" # Must be the target custer clusters: @@ -26,10 +26,13 @@ spec: replication.factor: -1 offset-syncs.topic.replication.factor: -1 sync.topic.acls.enabled: "false" + refresh.topics.interval.seconds: 600 checkpointConnector: tasksMax: 1 config: # -1 means it will use the default replication factor configured in the broker checkpoints.topic.replication.factor: -1 + sync.group.offsets.enabled: "false" + refresh.groups.interval.seconds: 600 topicsPattern: ".*" groupsPattern: ".*" diff --git a/examples/mirror-maker/kafka-mirror-maker-tls.yaml b/examples/mirror-maker/kafka-mirror-maker-tls.yaml index 5f287471bfd..b3d04665149 100644 --- a/examples/mirror-maker/kafka-mirror-maker-tls.yaml +++ b/examples/mirror-maker/kafka-mirror-maker-tls.yaml @@ -3,7 +3,7 @@ kind: KafkaMirrorMaker metadata: name: my-mirror-maker spec: - version: 3.6.0 + version: 3.6.1 replicas: 1 consumer: bootstrapServers: cluster-a-kafka-bootstrap:9093 # Source cluster diff --git a/examples/mirror-maker/kafka-mirror-maker.yaml b/examples/mirror-maker/kafka-mirror-maker.yaml index 60df02ba479..23bc9e98367 100644 --- a/examples/mirror-maker/kafka-mirror-maker.yaml +++ b/examples/mirror-maker/kafka-mirror-maker.yaml @@ -3,7 +3,7 @@ kind: KafkaMirrorMaker metadata: name: my-mirror-maker spec: - version: 3.6.0 + version: 3.6.1 replicas: 1 consumer: bootstrapServers: cluster-a-kafka-bootstrap:9092 # Source cluster diff --git a/examples/mirror-maker/kafka-source.yaml b/examples/mirror-maker/kafka-source.yaml index c5ced6189f0..fc34593abbd 100644 --- a/examples/mirror-maker/kafka-source.yaml +++ b/examples/mirror-maker/kafka-source.yaml @@ -4,7 +4,7 @@ metadata: name: cluster-a spec: kafka: - version: 3.6.0 + version: 3.6.1 replicas: 1 listeners: - name: plain diff --git a/examples/mirror-maker/kafka-target.yaml b/examples/mirror-maker/kafka-target.yaml index 59596dced68..d2634669566 100644 --- a/examples/mirror-maker/kafka-target.yaml +++ b/examples/mirror-maker/kafka-target.yaml @@ -4,7 +4,7 @@ metadata: name: cluster-b spec: kafka: - version: 3.6.0 + version: 3.6.1 replicas: 1 listeners: - name: plain diff --git a/examples/security/keycloak-authorization/README.md b/examples/security/keycloak-authorization/README.md index 95b242d94e6..98d1623c19a 100644 --- a/examples/security/keycloak-authorization/README.md +++ b/examples/security/keycloak-authorization/README.md @@ -7,13 +7,13 @@ This folder contains an example `Kafka` custom resource configured for OAuth 2.0 The folder also contains a Keycloak realm export to import into your Keycloak instance to support the example. -Full instructions for the example are available in the [Strimzi Documentation](https://strimzi.io/docs/operators/0.38.0/configuring.html#proc-oauth-authorization-keycloak-example_str). +Full instructions for the example are available in the [Strimzi Documentation](https://strimzi.io/docs/operators/0.39.0/configuring.html#proc-oauth-authorization-keycloak-example_str). - [kafka-authz-realm.json](./kafka-authz-realm.json) - The Keycloak realm export file - [kafka-ephemeral-oauth-single-keycloak-authz.yaml](./kafka-ephemeral-oauth-single-keycloak-authz.yaml) - The Kafka CR that defines a single-node Kafka cluster with `oauth` authentication and `keycloak` authorization, - using the `kafka-authz` realm. See [full example instructions](https://strimzi.io/docs/operators/0.38.0/configuring.html#proc-oauth-authorization-keycloak-example_str) for proper preparation and deployment. + using the `kafka-authz` realm. See [full example instructions](https://strimzi.io/docs/operators/0.39.0/configuring.html#proc-oauth-authorization-keycloak-example_str) for proper preparation and deployment. - [kafka-ephemeral-oauth-single-keycloak-authz-metrics.yaml](./kafka-ephemeral-oauth-single-keycloak-authz-metrics.yaml) - The Kafka CR that defines a single-node Kafka cluster with `oauth` authentication and `keycloak` authorization, with included configuration for exporting the OAuth metrics using Prometheus JMX exporter. diff --git a/examples/security/keycloak-authorization/kafka-ephemeral-oauth-single-keycloak-authz-metrics.yaml b/examples/security/keycloak-authorization/kafka-ephemeral-oauth-single-keycloak-authz-metrics.yaml index 101f1ab5665..90f76255494 100644 --- a/examples/security/keycloak-authorization/kafka-ephemeral-oauth-single-keycloak-authz-metrics.yaml +++ b/examples/security/keycloak-authorization/kafka-ephemeral-oauth-single-keycloak-authz-metrics.yaml @@ -4,7 +4,7 @@ metadata: name: my-cluster spec: kafka: - version: 3.6.0 + version: 3.6.1 replicas: 1 listeners: - name: tls diff --git a/examples/security/keycloak-authorization/kafka-ephemeral-oauth-single-keycloak-authz.yaml b/examples/security/keycloak-authorization/kafka-ephemeral-oauth-single-keycloak-authz.yaml index 132251cbbb2..15bcc985198 100644 --- a/examples/security/keycloak-authorization/kafka-ephemeral-oauth-single-keycloak-authz.yaml +++ b/examples/security/keycloak-authorization/kafka-ephemeral-oauth-single-keycloak-authz.yaml @@ -4,7 +4,7 @@ metadata: name: my-cluster spec: kafka: - version: 3.6.0 + version: 3.6.1 replicas: 1 listeners: - name: tls diff --git a/examples/security/scram-sha-512-auth/connect.yaml b/examples/security/scram-sha-512-auth/connect.yaml index eaf8b2e213a..ad64d48602d 100644 --- a/examples/security/scram-sha-512-auth/connect.yaml +++ b/examples/security/scram-sha-512-auth/connect.yaml @@ -66,7 +66,7 @@ metadata: # # needing to call the Connect REST API directly # strimzi.io/use-connector-resources: "true" spec: - version: 3.6.0 + version: 3.6.1 replicas: 1 bootstrapServers: my-cluster-kafka-bootstrap:9093 tls: diff --git a/examples/security/scram-sha-512-auth/kafka.yaml b/examples/security/scram-sha-512-auth/kafka.yaml index f7aa716652e..d6d4433be74 100644 --- a/examples/security/scram-sha-512-auth/kafka.yaml +++ b/examples/security/scram-sha-512-auth/kafka.yaml @@ -4,7 +4,7 @@ metadata: name: my-cluster spec: kafka: - version: 3.6.0 + version: 3.6.1 replicas: 3 listeners: - name: tls diff --git a/examples/security/scram-sha-512-auth/mirror-maker-2.yaml b/examples/security/scram-sha-512-auth/mirror-maker-2.yaml index 6b6229ca179..181938884b4 100644 --- a/examples/security/scram-sha-512-auth/mirror-maker-2.yaml +++ b/examples/security/scram-sha-512-auth/mirror-maker-2.yaml @@ -4,7 +4,7 @@ metadata: name: cluster-a spec: kafka: - version: 3.6.0 + version: 3.6.1 replicas: 1 listeners: - name: tls @@ -46,7 +46,7 @@ metadata: name: cluster-b spec: kafka: - version: 3.6.0 + version: 3.6.1 replicas: 1 listeners: - name: tls @@ -218,7 +218,7 @@ kind: KafkaMirrorMaker2 metadata: name: my-mirror-maker-2 spec: - version: 3.6.0 + version: 3.6.1 replicas: 1 connectCluster: "cluster-b" # Must be the target custer clusters: @@ -261,11 +261,16 @@ spec: replication.factor: -1 offset-syncs.topic.replication.factor: -1 sync.topic.acls.enabled: "false" + refresh.topics.interval.seconds: 600 + offset.lag.max: 100 checkpointConnector: tasksMax: 1 config: # -1 means it will use the default replication factor configured in the broker checkpoints.topic.replication.factor: -1 sync.group.offsets.enabled: "true" + emit.checkpoints.interval.seconds: 60 + sync.group.offsets.interval.seconds: 60 + refresh.groups.interval.seconds: 600 topicsPattern: ".*" groupsPattern: ".*" diff --git a/examples/security/tls-auth/connect.yaml b/examples/security/tls-auth/connect.yaml index 0eb20c11dcb..9c20c29d67d 100644 --- a/examples/security/tls-auth/connect.yaml +++ b/examples/security/tls-auth/connect.yaml @@ -66,7 +66,7 @@ metadata: # # needing to call the Connect REST API directly # strimzi.io/use-connector-resources: "true" spec: - version: 3.6.0 + version: 3.6.1 replicas: 1 bootstrapServers: my-cluster-kafka-bootstrap:9093 tls: diff --git a/examples/security/tls-auth/kafka.yaml b/examples/security/tls-auth/kafka.yaml index 82c96187761..bc947c45a28 100644 --- a/examples/security/tls-auth/kafka.yaml +++ b/examples/security/tls-auth/kafka.yaml @@ -4,7 +4,7 @@ metadata: name: my-cluster spec: kafka: - version: 3.6.0 + version: 3.6.1 replicas: 3 listeners: - name: tls diff --git a/examples/security/tls-auth/mirror-maker-2.yaml b/examples/security/tls-auth/mirror-maker-2.yaml index 9e2042dc1cb..eb3ed50dba4 100644 --- a/examples/security/tls-auth/mirror-maker-2.yaml +++ b/examples/security/tls-auth/mirror-maker-2.yaml @@ -4,7 +4,7 @@ metadata: name: cluster-a spec: kafka: - version: 3.6.0 + version: 3.6.1 replicas: 1 listeners: - name: tls @@ -46,7 +46,7 @@ metadata: name: cluster-b spec: kafka: - version: 3.6.0 + version: 3.6.1 replicas: 1 listeners: - name: tls @@ -209,7 +209,7 @@ kind: KafkaMirrorMaker2 metadata: name: my-mirror-maker-2 spec: - version: 3.6.0 + version: 3.6.1 replicas: 1 connectCluster: "cluster-b" # Must be the target custer clusters: @@ -252,11 +252,16 @@ spec: replication.factor: -1 offset-syncs.topic.replication.factor: -1 sync.topic.acls.enabled: "false" + refresh.topics.interval.seconds: 600 + offset.lag.max: 100 checkpointConnector: tasksMax: 1 config: # -1 means it will use the default replication factor configured in the broker checkpoints.topic.replication.factor: -1 sync.group.offsets.enabled: "true" + emit.checkpoints.interval.seconds: 60 + sync.group.offsets.interval.seconds: 60 + refresh.groups.interval.seconds: 600 topicsPattern: ".*" groupsPattern: ".*" diff --git a/helm-charts/helm3/strimzi-kafka-operator/README.md b/helm-charts/helm3/strimzi-kafka-operator/README.md index 304c06ab8e3..4bdfe1eeebc 100644 --- a/helm-charts/helm3/strimzi-kafka-operator/README.md +++ b/helm-charts/helm3/strimzi-kafka-operator/README.md @@ -95,7 +95,7 @@ the documentation for more details. | `watchAnyNamespace` | Watch the whole Kubernetes cluster (all namespaces) | `false` | | `defaultImageRegistry` | Default image registry for all the images | `quay.io` | | `defaultImageRepository` | Default image registry for all the images | `strimzi` | -| `defaultImageTag` | Default image tag for all the images except Kafka Bridge | `0.38.0` | +| `defaultImageTag` | Default image tag for all the images except Kafka Bridge | `0.39.0` | | `image.registry` | Override default Cluster Operator image registry | `nil` | | `image.repository` | Override default Cluster Operator image repository | `nil` | | `image.name` | Cluster Operator image name | `cluster-operator` | @@ -113,6 +113,9 @@ the documentation for more details. | `rbac.create` | Whether to create RBAC related resources | `yes` | | `serviceAccountCreate` | Whether to create a service account | `yes` | | `serviceAccount` | Cluster Operator's service account | `strimzi-cluster-operator` | +| `podDisruptionBudget.enabled` | Whether to enable the podDisruptionBudget feature | `false` | +| `podDisruptionBudget.minAvailable` | Default value for how many pods must be running in a cluster | `1` | +| `podDisruptionBudget.maxUnavailable` | Default value for how many pods can be down | `nil` | | `extraEnvs` | Extra environment variables for the Cluster operator container | `[]` | | `kafka.image.registry` | Override default Kafka image registry | `nil` | | `kafka.image.repository` | Override default Kafka image repository | `nil` | diff --git a/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml b/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml index 08384eb1ddf..e01deee37cb 100644 --- a/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml +++ b/helm-charts/helm3/strimzi-kafka-operator/crds/040-Crd-kafka.yaml @@ -55,14 +55,17 @@ spec: properties: version: type: string - description: "The kafka broker version. Defaults to {DefaultKafkaVersion}. Consult the user documentation to understand the process required to upgrade or downgrade the version." + description: The Kafka broker version. Defaults to the latest version. Consult the user documentation to understand the process required to upgrade or downgrade the version. + metadataVersion: + type: string + description: "The KRaft metadata version used by the Kafka cluster. This property is ignored when running in ZooKeeper mode. If the property is not set, it defaults to the metadata version that corresponds to the `version` property." replicas: type: integer minimum: 1 description: The number of pods in the cluster. image: type: string - description: The docker image for the pods. The default value depends on the configured `Kafka.spec.kafka.version`. + description: "The container image used for Kafka pods. If the property is not set, the default Kafka image version is determined based on the `version` configuration. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration. Changing the Kafka image version does not automatically update the image versions for other components, such as Kafka Exporter. " listeners: type: array minItems: 1 @@ -813,7 +816,7 @@ spec: optional: type: boolean description: Reference to the key in the ConfigMap containing the configuration. - description: "ConfigMap entry where the Prometheus JMX Exporter configuration is stored. For details of the structure of this configuration, see the {JMXExporter}." + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' required: - type - valueFrom @@ -1263,7 +1266,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -1765,7 +1768,7 @@ spec: description: The number of pods in the cluster. image: type: string - description: The docker image for the pods. + description: "The container image used for ZooKeeper pods. If no image name is explicitly specified, it is determined based on the Kafka version set in `spec.kafka.version`. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration." storage: type: object properties: @@ -1947,7 +1950,7 @@ spec: optional: type: boolean description: Reference to the key in the ConfigMap containing the configuration. - description: "ConfigMap entry where the Prometheus JMX Exporter configuration is stored. For details of the structure of this configuration, see the {JMXExporter}." + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' required: - type - valueFrom @@ -2397,7 +2400,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -3508,7 +3511,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -3914,7 +3917,7 @@ spec: properties: image: type: string - description: The docker image for the pods. + description: "The container image used for Cruise Control pods. If no image name is explicitly specified, the image name corresponds to the name specified in the Cluster Operator configuration. If an image name is not defined in the Cluster Operator configuration, a default value is used." tlsSidecar: type: object properties: @@ -4540,7 +4543,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -4896,7 +4899,7 @@ spec: optional: type: boolean description: Reference to the key in the ConfigMap containing the configuration. - description: "ConfigMap entry where the Prometheus JMX Exporter configuration is stored. For details of the structure of this configuration, see the {JMXExporter}." + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' required: - type - valueFrom @@ -5395,7 +5398,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -5560,7 +5563,7 @@ spec: properties: image: type: string - description: The docker image for the pods. + description: "The container image used for the Kafka Exporter pods. If no image name is explicitly specified, the image name corresponds to the version specified in the Cluster Operator configuration. If an image name is not defined in the Cluster Operator configuration, a default value is used." groupRegex: type: string description: Regular expression to specify which consumer groups to collect. Default value is `.*`. @@ -6011,7 +6014,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -6318,4 +6321,7 @@ spec: kafkaVersion: type: string description: The version of Kafka currently deployed in the cluster. + kafkaMetadataVersion: + type: string + description: The KRaft metadata.version currently used by the Kafka cluster. description: "The status of the Kafka and ZooKeeper clusters, and Topic Operator." diff --git a/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml b/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml index ace810452f2..a6b891873c8 100644 --- a/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml +++ b/helm-charts/helm3/strimzi-kafka-operator/crds/041-Crd-kafkaconnect.yaml @@ -48,13 +48,13 @@ spec: properties: version: type: string - description: "The Kafka Connect version. Defaults to {DefaultKafkaVersion}. Consult the user documentation to understand the process required to upgrade or downgrade the version." + description: The Kafka Connect version. Defaults to the latest version. Consult the user documentation to understand the process required to upgrade or downgrade the version. replicas: type: integer description: The number of pods in the Kafka Connect group. Defaults to `3`. image: type: string - description: The docker image for the pods. + description: "The container image used for Kafka Connect pods. If no image name is explicitly specified, it is determined based on the `spec.version` configuration. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration." bootstrapServers: type: string description: Bootstrap servers to connect to. This should be given as a comma separated list of __:__ pairs. @@ -819,7 +819,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -1536,7 +1536,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -1726,7 +1726,7 @@ spec: description: Annotations added to the Kubernetes resource. description: Metadata applied to the resource. description: Template for Secret of the Kafka Connect Cluster JMX authentication. - description: "Template for Kafka Connect and Kafka Mirror Maker 2 resources. The template allows users to specify how the `Deployment`, `Pods` and `Service` are generated." + description: "Template for Kafka Connect and Kafka Mirror Maker 2 resources. The template allows users to specify how the `Pods`, `Service`, and other services are generated." externalConfiguration: type: object properties: @@ -1944,7 +1944,7 @@ spec: optional: type: boolean description: Reference to the key in the ConfigMap containing the configuration. - description: "ConfigMap entry where the Prometheus JMX Exporter configuration is stored. For details of the structure of this configuration, see the {JMXExporter}." + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' required: - type - valueFrom diff --git a/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml b/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml index 8aa78ba2b7e..ee612421488 100644 --- a/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml +++ b/helm-charts/helm3/strimzi-kafka-operator/crds/045-Crd-kafkamirrormaker.yaml @@ -58,14 +58,14 @@ spec: properties: version: type: string - description: "The Kafka MirrorMaker version. Defaults to {DefaultKafkaVersion}. Consult the documentation to understand the process required to upgrade or downgrade the version." + description: The Kafka MirrorMaker version. Defaults to the latest version. Consult the documentation to understand the process required to upgrade or downgrade the version. replicas: type: integer minimum: 0 description: The number of pods in the `Deployment`. image: type: string - description: The docker image for the pods. + description: "The container image used for Kafka MirrorMaker pods. If no image name is explicitly specified, it is determined based on the `spec.version` configuration. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration." consumer: type: object properties: @@ -531,7 +531,7 @@ spec: optional: type: boolean description: Reference to the key in the ConfigMap containing the configuration. - description: "ConfigMap entry where the Prometheus JMX Exporter configuration is stored. For details of the structure of this configuration, see the {JMXExporter}." + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' required: - type - valueFrom @@ -963,7 +963,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." diff --git a/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml b/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml index 9c7c26e99ff..26d22e0383c 100644 --- a/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml +++ b/helm-charts/helm3/strimzi-kafka-operator/crds/046-Crd-kafkabridge.yaml @@ -57,7 +57,7 @@ spec: description: The number of pods in the `Deployment`. Defaults to `1`. image: type: string - description: The docker image for the pods. + description: "The container image used for Kafka Bridge pods. If no image name is explicitly specified, the image name corresponds to the image specified in the Cluster Operator configuration. If an image name is not defined in the Cluster Operator configuration, a default value is used." bootstrapServers: type: string description: A list of host:port pairs for establishing the initial connection to the Kafka cluster. @@ -827,7 +827,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." diff --git a/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml b/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml index 622eab8bd47..b1c38c6ae61 100644 --- a/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml +++ b/helm-charts/helm3/strimzi-kafka-operator/crds/048-Crd-kafkamirrormaker2.yaml @@ -48,13 +48,13 @@ spec: properties: version: type: string - description: "The Kafka Connect version. Defaults to {DefaultKafkaVersion}. Consult the user documentation to understand the process required to upgrade or downgrade the version." + description: The Kafka Connect version. Defaults to the latest version. Consult the user documentation to understand the process required to upgrade or downgrade the version. replicas: type: integer description: The number of pods in the Kafka Connect group. Defaults to `3`. image: type: string - description: The docker image for the pods. + description: "The container image used for Kafka Connect pods. If no image name is explicitly specified, it is determined based on the `spec.version` configuration. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration." connectCluster: type: string description: The cluster alias used for Kafka Connect. The value must match the alias of the *target* Kafka cluster as specified in the `spec.clusters` configuration. The target Kafka cluster is used by the underlying Kafka Connect framework for its internal topics. @@ -964,7 +964,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -1681,7 +1681,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -1871,7 +1871,7 @@ spec: description: Annotations added to the Kubernetes resource. description: Metadata applied to the resource. description: Template for Secret of the Kafka Connect Cluster JMX authentication. - description: "Template for Kafka Connect and Kafka Mirror Maker 2 resources. The template allows users to specify how the `Deployment`, `Pods` and `Service` are generated." + description: "Template for Kafka Connect and Kafka Mirror Maker 2 resources. The template allows users to specify how the `Pods`, `Service`, and other services are generated." externalConfiguration: type: object properties: @@ -1986,7 +1986,7 @@ spec: optional: type: boolean description: Reference to the key in the ConfigMap containing the configuration. - description: "ConfigMap entry where the Prometheus JMX Exporter configuration is stored. For details of the structure of this configuration, see the {JMXExporter}." + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' required: - type - valueFrom diff --git a/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml b/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml index 5598b6a479c..239749c8510 100644 --- a/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml +++ b/helm-charts/helm3/strimzi-kafka-operator/crds/04A-Crd-kafkanodepool.yaml @@ -603,7 +603,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -921,6 +921,14 @@ spec: clusterId: type: string description: Kafka cluster ID. + roles: + type: array + items: + type: string + enum: + - controller + - broker + description: The roles currently assigned to this pool. replicas: type: integer description: The current number of pods being used to provide this resource. diff --git a/helm-charts/helm3/strimzi-kafka-operator/files/grafana-dashboards/strimzi-kafka-connect.json b/helm-charts/helm3/strimzi-kafka-operator/files/grafana-dashboards/strimzi-kafka-connect.json index 0df9e3d9555..9a67e4a7a2c 100644 --- a/helm-charts/helm3/strimzi-kafka-operator/files/grafana-dashboards/strimzi-kafka-connect.json +++ b/helm-charts/helm3/strimzi-kafka-operator/files/grafana-dashboards/strimzi-kafka-connect.json @@ -48,9 +48,23 @@ "gnetId": null, "graphTooltip": 0, "id": null, - "iteration": 1687300079448, + "iteration": 1699891569664, "links": [], "panels": [ + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 46, + "panels": [], + "title": "Overview", + "type": "row" + }, { "cacheTimeout": null, "colorBackground": false, @@ -77,9 +91,9 @@ }, "gridPos": { "h": 7, - "w": 4, + "w": 6, "x": 0, - "y": 0 + "y": 1 }, "height": 250, "id": 26, @@ -122,7 +136,9 @@ { "expr": "sum(kafka_connect_worker_connector_count{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", "format": "time_series", + "interval": "", "intervalFactor": 2, + "legendFormat": "", "refId": "A", "step": 40 } @@ -166,9 +182,9 @@ }, "gridPos": { "h": 7, - "w": 4, - "x": 4, - "y": 0 + "w": 6, + "x": 6, + "y": 1 }, "id": 27, "interval": null, @@ -234,6 +250,7 @@ "dashLength": 10, "dashes": false, "datasource": "${DS_PROMETHEUS}", + "decimals": 0, "fieldConfig": { "defaults": { "custom": {} @@ -244,50 +261,64 @@ "fillGradient": 0, "gridPos": { "h": 7, - "w": 8, - "x": 8, - "y": 0 + "w": 12, + "x": 12, + "y": 1 }, "hiddenSeries": false, - "id": 28, + "id": 36, "legend": { + "alignAsTable": true, "avg": false, - "current": false, + "current": true, "max": false, "min": false, + "rightSide": true, "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, - "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, - "stack": true, + "stack": false, "steppedLine": false, "targets": [ { - "expr": "sum(rate(kafka_consumer_incoming_byte_total{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}[1m])) by (kubernetes_pod_name)", + "expr": "sum(kafka_consumer_connection_count{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", + "hide": false, "interval": "", - "legendFormat": "{{kubernetes_pod_name}}", + "legendFormat": "#consumer connections", "refId": "A" + }, + { + "expr": "sum(kafka_producer_connection_count{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", + "interval": "", + "legendFormat": "#producer connections", + "refId": "B" + }, + { + "expr": "sum(kafka_admin_client_connection_count{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", + "interval": "", + "legendFormat": "#admin connections", + "refId": "C" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "(Sink/Consumers) Incoming bytes per second", + "title": "Connection Count", "tooltip": { "shared": true, "sort": 0, @@ -303,11 +334,12 @@ }, "yaxes": [ { - "format": "Bps", - "label": "Bytes/sec", + "decimals": 0, + "format": "short", + "label": null, "logBase": 1, "max": null, - "min": "0", + "min": null, "show": true }, { @@ -330,30 +362,32 @@ "dashLength": 10, "dashes": false, "datasource": "${DS_PROMETHEUS}", + "description": "Bytes per second outgoing to Kafka from Connect worker. Includes data to internal topics.", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 1, + "fill": 10, "fillGradient": 0, "gridPos": { "h": 7, - "w": 8, - "x": 16, - "y": 0 + "w": 12, + "x": 0, + "y": 8 }, "hiddenSeries": false, "id": 29, "legend": { - "avg": false, - "current": false, + "alignAsTable": true, + "avg": true, + "current": true, "max": false, "min": false, "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, @@ -383,7 +417,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "(Source/Producers) Outgoing bytes per second", + "title": "(Source/Producers) Outgoing Bytes per Second", "tooltip": { "shared": true, "sort": 0, @@ -426,30 +460,32 @@ "dashLength": 10, "dashes": false, "datasource": "${DS_PROMETHEUS}", + "description": "Bytes per second incoming to Kafka Connect worker from Kafka. Includes data from internal topics.", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 1, + "fill": 10, "fillGradient": 0, "gridPos": { "h": 7, - "w": 6, - "x": 0, - "y": 7 + "w": 12, + "x": 12, + "y": 8 }, "hiddenSeries": false, - "id": 30, + "id": 28, "legend": { - "avg": false, - "current": false, + "alignAsTable": true, + "avg": true, + "current": true, "max": false, "min": false, "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, @@ -465,26 +501,21 @@ "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, - "span": 4, - "stack": false, + "stack": true, "steppedLine": false, "targets": [ { - "expr": "sum(rate(container_cpu_usage_seconds_total{namespace=\"$kubernetes_namespace\",pod=~\"$strimzi_connect_cluster_name-connect-.+\",container=\"$strimzi_connect_cluster_name-connect\"}[5m])) by (pod)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{pod}}", - "metric": "", - "refId": "A", - "step": 4 + "expr": "sum(rate(kafka_consumer_incoming_byte_total{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}[1m])) by (kubernetes_pod_name)", + "interval": "", + "legendFormat": "{{kubernetes_pod_name}}", + "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "CPU Usage", + "title": "(Sink/Consumers) Incoming Bytes per Second", "tooltip": { "shared": true, "sort": 0, @@ -500,11 +531,11 @@ }, "yaxes": [ { - "format": "short", - "label": "Cores", + "format": "Bps", + "label": "Bytes/sec", "logBase": 1, "max": null, - "min": null, + "min": "0", "show": true }, { @@ -522,171 +553,148 @@ } }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 15 + }, + "id": 50, + "panels": [], + "title": "Workers", + "type": "row" + }, + { + "datasource": null, "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { - "h": 7, - "w": 6, - "x": 6, - "y": 7 - }, - "hiddenSeries": false, - "id": 31, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "h": 4, + "w": 12, + "x": 0, + "y": 16 }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", + "id": 52, "options": { - "alertThreshold": true + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "showUnfilled": true }, - "percentage": false, "pluginVersion": "7.3.7", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, "targets": [ { - "expr": "sum (jvm_memory_bytes_used{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (kubernetes_pod_name)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, + "expr": "sum(kafka_connect_coordinator_assigned_connectors{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (kubernetes_pod_name)", + "interval": "", "legendFormat": "{{kubernetes_pod_name}}", - "metric": "", - "refId": "A", - "step": 4 + "refId": "A" } ], - "thresholds": [], "timeFrom": null, - "timeRegions": [], "timeShift": null, - "title": "JVM Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": "Memory", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "title": "Assigned Connectors by Worker", + "type": "bargauge" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, - "datasource": "${DS_PROMETHEUS}", + "datasource": null, "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "mappings": [], + "max": 1, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { - "h": 7, - "w": 6, + "h": 8, + "w": 12, "x": 12, - "y": 7 + "y": 16 }, "hiddenSeries": false, - "id": 32, + "id": 56, "legend": { "avg": false, "current": false, "max": false, "min": false, - "show": true, + "show": false, "total": false, "values": false }, "lines": true, "linewidth": 1, - "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, - "span": 4, "stack": false, "steppedLine": false, "targets": [ { - "expr": "sum(rate(jvm_gc_collection_seconds_sum{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}[5m])) by (kubernetes_pod_name)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{kubernetes_pod_name}}", - "metric": "", - "refId": "A", - "step": 4 + "expr": "sum(kafka_connect_worker_rebalance_rebalancing{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", + "interval": "", + "legendFormat": "", + "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Time spent in GC", + "title": "Rebalancing", "tooltip": { "shared": true, "sort": 0, @@ -702,11 +710,12 @@ }, "yaxes": [ { - "format": "percent", - "label": "% time in GC", + "decimals": 0, + "format": "none", + "label": null, "logBase": 1, - "max": null, - "min": null, + "max": "1", + "min": "0", "show": true }, { @@ -724,124 +733,118 @@ } }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "description": "JVM thread count", + "datasource": null, "fieldConfig": { "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 6, - "x": 18, - "y": 7 - }, - "hiddenSeries": false, - "id": 37, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "custom": {}, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", + "gridPos": { + "h": 4, + "w": 12, + "x": 0, + "y": 20 + }, + "id": 54, "options": { - "alertThreshold": true + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "showUnfilled": true }, - "paceLength": 10, - "percentage": false, "pluginVersion": "7.3.7", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { - "expr": "sum(jvm_threads_current{namespace=\"$kubernetes_namespace\",strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (kubernetes_pod_name)", - "format": "time_series", - "intervalFactor": 1, + "expr": "sum(kafka_connect_coordinator_assigned_tasks{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (kubernetes_pod_name)", + "interval": "", "legendFormat": "{{kubernetes_pod_name}}", "refId": "A" } ], - "thresholds": [], "timeFrom": null, - "timeRegions": [], "timeShift": null, - "title": "JVM Thread Count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] + "title": "Assigned Tasks per Worker", + "type": "bargauge" + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 24 }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "id": 48, + "panels": [], + "title": "Connectors and Tasks", + "type": "row" }, { "cacheTimeout": null, "columns": [], "datasource": "${DS_PROMETHEUS}", + "description": "Connectors that have one or more tasks that are not in a running state, i.e. the state is one of paused, failed, unassigned or destroyed.", "fieldConfig": { "defaults": { - "custom": {} + "custom": { + "align": null, + "filterable": false + }, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } }, "overrides": [] }, "fontSize": "100%", "gridPos": { - "h": 7, - "w": 8, + "h": 9, + "w": 12, "x": 0, - "y": 14 + "y": 25 }, "id": 34, "links": [], + "options": { + "frameIndex": 1, + "showHeader": true + }, "pageSize": null, + "pluginVersion": "7.3.7", "showHeader": true, "sort": { "col": 0, @@ -891,35 +894,67 @@ "targets": [ { "expr": "sum(kafka_connect_worker_connector_paused_task_count{namespace=\"$kubernetes_namespace\",strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (connector) != 0", + "format": "table", "instant": true, "interval": "", - "legendFormat": "[paused] {{connector}}", - "refId": "B" + "legendFormat": "", + "refId": "A" }, { "expr": "sum(kafka_connect_worker_connector_failed_task_count{namespace=\"$kubernetes_namespace\",strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (connector) != 0", + "format": "table", "instant": true, "interval": "", - "legendFormat": "[failed] {{connector}}", - "refId": "A" + "legendFormat": "", + "refId": "B" }, { "expr": "sum(kafka_connect_worker_connector_unassigned_task_count{namespace=\"$kubernetes_namespace\",strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (connector) != 0", + "format": "table", "instant": true, "interval": "", - "legendFormat": "[unassigned] {{connector}}", + "legendFormat": "", "refId": "C" }, { "expr": "sum(kafka_connect_worker_connector_destroyed_task_count{namespace=\"$kubernetes_namespace\",strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (connector) != 0", + "format": "table", "instant": true, "interval": "", - "legendFormat": "[destroyed] {{connector}}", + "legendFormat": "", "refId": "D" } ], - "title": "Connector task state with issues", + "title": "Connector Tasks with Issues", "transform": "timeseries_to_rows", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "Time": 5, + "Value #A": 1, + "Value #B": 2, + "Value #C": 3, + "Value #D": 4, + "connector": 0 + }, + "renameByName": { + "Time": "Update Time", + "Value #A": "Paused Tasks", + "Value #B": "Failed Tasks", + "Value #C": "Unassigned Tasks", + "Value #D": "Destroyed Tasks", + "connector": "Connector" + } + } + } + ], "type": "table" }, { @@ -928,6 +963,7 @@ "dashLength": 10, "dashes": false, "datasource": "${DS_PROMETHEUS}", + "decimals": 0, "fieldConfig": { "defaults": { "custom": {} @@ -937,21 +973,23 @@ "fill": 1, "fillGradient": 0, "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 14 + "h": 9, + "w": 12, + "x": 12, + "y": 25 }, "hiddenSeries": false, "id": 35, "legend": { + "alignAsTable": true, "avg": false, - "current": false, + "current": true, "max": false, "min": false, + "rightSide": true, "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, @@ -1013,7 +1051,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Connector task state", + "title": "Connector Task State", "tooltip": { "shared": true, "sort": 0, @@ -1052,115 +1090,6 @@ "alignLevel": null } }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 14 - }, - "hiddenSeries": false, - "id": 36, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.3.7", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(kafka_consumer_connection_count{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", - "hide": false, - "interval": "", - "legendFormat": "#consumer connections", - "refId": "A" - }, - { - "expr": "sum(kafka_producer_connection_count{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", - "interval": "", - "legendFormat": "#producer connections", - "refId": "B" - }, - { - "expr": "sum(kafka_admin_client_connection_count{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", - "interval": "", - "legendFormat": "#admin connections", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Connection count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 0, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, { "datasource": "${DS_PROMETHEUS}", "fieldConfig": { @@ -1170,7 +1099,7 @@ }, "custom": { "align": "left", - "displayMode": "color-text", + "displayMode": "auto", "filterable": false }, "mappings": [], @@ -1188,64 +1117,21 @@ ] } }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "status" - }, - "properties": [ - { - "id": "custom.displayMode", - "value": "color-background" - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Connector" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "text", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Time" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "text", - "mode": "fixed" - } - } - ] - } - ] + "overrides": [] }, "gridPos": { - "h": 8, - "w": 12, + "h": 7, + "w": 24, "x": 0, - "y": 22 + "y": 34 }, "id": 42, "options": { "showHeader": true, "sortBy": [ { - "desc": true, - "displayName": "Value #A" + "desc": false, + "displayName": "Connector" } ] }, @@ -1253,7 +1139,7 @@ "targets": [ { "exemplar": true, - "expr": "count by (status, connector) (kafka_connect_connector_status{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", + "expr": "sum(kafka_connect_connector_status{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"} * on(connector) group_left(connector_class) kafka_connect_connector_connector_class{} * on (connector) group_left(connector_version) kafka_connect_connector_connector_version{} * on (connector) group_left(connector_type) kafka_connect_connector_connector_type{}) by (connector, status, connector_class, kubernetes_pod_name, connector_version, connector_type)", "format": "table", "instant": true, "interval": "", @@ -1271,7 +1157,11 @@ "names": [ "Time", "connector", - "status" + "kubernetes_pod_name", + "status", + "connector_class", + "connector_type", + "connector_version" ] } } @@ -1281,13 +1171,21 @@ "options": { "excludeByName": {}, "indexByName": { - "Time": 2, + "Time": 6, "connector": 0, - "status": 1 + "connector_class": 2, + "connector_type": 3, + "connector_version": 4, + "kubernetes_pod_name": 1, + "status": 5 }, "renameByName": { "Time": "Update Time", "connector": "Connector", + "connector_class": "Class", + "connector_type": "Type", + "connector_version": "Version", + "kubernetes_pod_name": "Worker Pod Name", "status": "Status" } } @@ -1326,12 +1224,24 @@ { "matcher": { "id": "byName", - "options": "status" + "options": "Task" + }, + "properties": [ + { + "id": "custom.align", + "value": "left" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Total Record Failures" }, "properties": [ { - "id": "custom.displayMode", - "value": "color-background" + "id": "custom.align", + "value": "left" } ] } @@ -1339,19 +1249,25 @@ }, "gridPos": { "h": 8, - "w": 12, - "x": 12, - "y": 22 + "w": 24, + "x": 0, + "y": 41 }, "id": 41, "options": { - "showHeader": true + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "Connector" + } + ] }, "pluginVersion": "7.3.7", "targets": [ { "exemplar": true, - "expr": "count by (connector, task, status) (kafka_connect_connector_task_status{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"})", + "expr": "sum(kafka_connect_task_error_total_record_failures{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"} * on(connector, task) group_left(status) kafka_connect_connector_task_status{}) by (connector, status, kubernetes_pod_name, task)", "format": "table", "instant": true, "interval": "", @@ -1368,8 +1284,10 @@ "names": [ "Time", "connector", + "kubernetes_pod_name", "status", - "task" + "task", + "Value" ] } } @@ -1377,16 +1295,22 @@ { "id": "organize", "options": { - "excludeByName": {}, + "excludeByName": { + "connector": false + }, "indexByName": { - "Time": 3, + "Time": 5, + "Value": 3, "connector": 0, - "status": 2, + "kubernetes_pod_name": 2, + "status": 4, "task": 1 }, "renameByName": { "Time": "Update Time", + "Value": "Total Record Failures", "connector": "Connector", + "kubernetes_pod_name": "Worker Pod Name", "status": "Status", "task": "Task" } @@ -1394,6 +1318,429 @@ } ], "type": "table" + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 49 + }, + "id": 44, + "panels": [], + "title": "JVM", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 6, + "x": 0, + "y": 50 + }, + "hiddenSeries": false, + "id": 30, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(container_cpu_usage_seconds_total{namespace=\"$kubernetes_namespace\",pod=~\"$strimzi_connect_cluster_name-connect-.+\",container=\"$strimzi_connect_cluster_name-connect\"}[5m])) by (pod)", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{pod}}", + "metric": "", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Usage", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "Cores", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 6, + "x": 6, + "y": 50 + }, + "hiddenSeries": false, + "id": 31, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum (jvm_memory_bytes_used{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (kubernetes_pod_name)", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "JVM Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "Memory", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 5, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 6, + "x": 12, + "y": 50 + }, + "hiddenSeries": false, + "id": 32, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": true, + "min": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(jvm_gc_collection_seconds_sum{strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}[5m])) by (kubernetes_pod_name)", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Time Spent in GC", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": null, + "format": "percent", + "label": "% time in GC", + "logBase": 1, + "max": "100", + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "decimals": 0, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 6, + "x": 18, + "y": 50 + }, + "hiddenSeries": false, + "id": 37, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "paceLength": 10, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(jvm_threads_current{namespace=\"$kubernetes_namespace\",strimzi_io_kind=~\"KafkaConnect.*\",strimzi_io_cluster=\"$strimzi_connect_cluster_name\"}) by (kubernetes_pod_name)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{kubernetes_pod_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "JVM Thread Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } } ], "refresh": "5s", @@ -1501,5 +1848,5 @@ "timezone": "", "title": "Strimzi Kafka Connect", "uid": "39fb097dc2c5ebf8a7717cf78fc2f8f7", - "version": 3 + "version": 4 } diff --git a/helm-charts/helm3/strimzi-kafka-operator/files/grafana-dashboards/strimzi-kafka-mirror-maker-2.json b/helm-charts/helm3/strimzi-kafka-operator/files/grafana-dashboards/strimzi-kafka-mirror-maker-2.json index 3388a27b060..ef849b195fe 100644 --- a/helm-charts/helm3/strimzi-kafka-operator/files/grafana-dashboards/strimzi-kafka-mirror-maker-2.json +++ b/helm-charts/helm3/strimzi-kafka-operator/files/grafana-dashboards/strimzi-kafka-mirror-maker-2.json @@ -54,9 +54,23 @@ "gnetId": null, "graphTooltip": 0, "id": null, - "iteration": 1687300878687, + "iteration": 1701691745357, "links": [], "panels": [ + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 47, + "panels": [], + "title": "Overview", + "type": "row" + }, { "cacheTimeout": null, "colorBackground": false, @@ -85,7 +99,7 @@ "h": 4, "w": 4, "x": 0, - "y": 0 + "y": 1 }, "height": 250, "id": 26, @@ -174,7 +188,7 @@ "h": 4, "w": 4, "x": 4, - "y": 0 + "y": 1 }, "id": 37, "interval": null, @@ -252,18 +266,19 @@ "h": 8, "w": 8, "x": 8, - "y": 0 + "y": 1 }, "hiddenSeries": false, "id": 28, "legend": { - "avg": false, - "current": false, + "alignAsTable": true, + "avg": true, + "current": true, "max": false, "min": false, - "show": false, + "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, @@ -298,7 +313,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Incoming bytes", + "title": "Incoming Bytes per Second", "tooltip": { "shared": true, "sort": 0, @@ -353,18 +368,19 @@ "h": 8, "w": 8, "x": 16, - "y": 0 + "y": 1 }, "hiddenSeries": false, "id": 29, "legend": { - "avg": false, - "current": false, + "alignAsTable": true, + "avg": true, + "current": true, "max": false, "min": false, - "show": false, + "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, @@ -399,7 +415,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Outgoing bytes", + "title": "Outgoing Bytes per Second", "tooltip": { "shared": true, "sort": 0, @@ -477,7 +493,7 @@ "h": 4, "w": 4, "x": 0, - "y": 4 + "y": 5 }, "id": 27, "interval": null, @@ -490,7 +506,7 @@ "orientation": "horizontal", "reduceOptions": { "calcs": [ - "mean" + "lastNotNull" ], "fields": "", "values": false @@ -503,7 +519,9 @@ { "expr": "sum(kafka_connect_worker_task_count{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"})", "format": "time_series", + "interval": "", "intervalFactor": 2, + "legendFormat": "", "refId": "A", "step": 40 } @@ -567,7 +585,7 @@ "h": 4, "w": 4, "x": 4, - "y": 4 + "y": 5 }, "id": 38, "interval": null, @@ -655,56 +673,51 @@ "fill": 1, "fillGradient": 0, "gridPos": { - "h": 7, + "h": 8, "w": 8, "x": 0, - "y": 8 + "y": 9 }, "hiddenSeries": false, - "id": 30, + "id": 43, "legend": { + "alignAsTable": true, "avg": false, - "current": false, + "current": true, "max": false, "min": false, "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, - "links": [], - "nullPointMode": "null", + "nullPointMode": "null as zero", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, - "span": 4, "stack": false, "steppedLine": false, "targets": [ { - "expr": "sum(rate(container_cpu_usage_seconds_total{namespace=\"$kubernetes_namespace\",pod=~\"$strimzi_mirror_maker_cluster_name-mirrormaker2-.+\",container=\"$strimzi_mirror_maker_cluster_name-mirrormaker2\"}[5m])) by (pod)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{pod}}", - "metric": "", - "refId": "A", - "step": 4 + "expr": "sum(kafka_connect_source_task_source_record_active_count{connector=~\"\\\".*SourceConnector\\\"\"})", + "interval": "", + "legendFormat": "", + "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "CPU Usage", + "title": "Source Connector - Connect Outstanding Messages Queue", "tooltip": { "shared": true, "sort": 0, @@ -720,8 +733,9 @@ }, "yaxes": [ { + "decimals": 0, "format": "short", - "label": "Cores", + "label": "msgs", "logBase": 1, "max": null, "min": null, @@ -756,56 +770,51 @@ "fill": 1, "fillGradient": 0, "gridPos": { - "h": 7, + "h": 8, "w": 8, "x": 8, - "y": 8 + "y": 9 }, "hiddenSeries": false, - "id": 31, + "id": 44, "legend": { + "alignAsTable": true, "avg": false, - "current": false, + "current": true, "max": false, "min": false, "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, - "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, - "span": 4, "stack": false, "steppedLine": false, "targets": [ { - "expr": "sum(jvm_memory_bytes_used{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (kubernetes_pod_name)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{kubernetes_pod_name}}", - "metric": "", - "refId": "A", - "step": 4 + "expr": "sum(kafka_producer_buffer_available_bytes{clientid=~\"\\\".*SourceConnector-[0-9]+\\\"\"})", + "interval": "", + "legendFormat": "{{clientid}}", + "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "JVM Memory", + "title": "Source Connector - Producer Available Buffer", "tooltip": { "shared": true, "sort": 0, @@ -821,8 +830,8 @@ }, "yaxes": [ { - "format": "bytes", - "label": "Memory", + "format": "short", + "label": "bytes", "logBase": 1, "max": null, "min": null, @@ -848,6 +857,7 @@ "dashLength": 10, "dashes": false, "datasource": "${DS_PROMETHEUS}", + "decimals": 0, "fieldConfig": { "defaults": { "custom": {} @@ -857,56 +867,51 @@ "fill": 1, "fillGradient": 0, "gridPos": { - "h": 7, + "h": 8, "w": 8, "x": 16, - "y": 8 + "y": 9 }, "hiddenSeries": false, - "id": 32, + "id": 45, "legend": { + "alignAsTable": true, "avg": false, - "current": false, + "current": true, "max": false, "min": false, "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, - "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, - "span": 4, "stack": false, "steppedLine": false, "targets": [ { - "expr": "sum(rate(jvm_gc_collection_seconds_sum{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}[5m])) by (kubernetes_pod_name)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{kubernetes_pod_name}}", - "metric": "", - "refId": "A", - "step": 4 + "expr": "sum(kafka_connect_connector_task_offset_commit_avg_time_ms{connector=~\"\\\".*SourceConnector\\\"\", task=~\"[0-9]+\"})/count(kafka_connect_connector_task_offset_commit_avg_time_ms{connector=~\"\\\".*SourceConnector\\\"\", task=~\"[0-9]+\"})", + "interval": "", + "legendFormat": "", + "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Time spent in GC", + "title": "Source Connector - Average Offset Commit Time", "tooltip": { "shared": true, "sort": 0, @@ -922,8 +927,8 @@ }, "yaxes": [ { - "format": "percent", - "label": "% time in GC", + "format": "short", + "label": "ms", "logBase": 1, "max": null, "min": null, @@ -944,316 +949,248 @@ } }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto", + "filterable": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" }, - "overrides": [] + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "partition" + }, + "properties": [ + { + "id": "custom.width", + "value": 76 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Partition" + }, + "properties": [ + { + "id": "custom.width", + "value": 76 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Current" + }, + "properties": [ + { + "id": "custom.width", + "value": 65 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Average" + }, + "properties": [ + { + "id": "custom.width", + "value": 70 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Min" + }, + "properties": [ + { + "id": "custom.width", + "value": 45 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Max" + }, + "properties": [ + { + "id": "custom.width", + "value": 41 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Time" + }, + "properties": [ + { + "id": "custom.width", + "value": 146 + } + ] + } + ] }, - "fill": 1, - "fillGradient": 0, "gridPos": { - "h": 8, - "w": 8, + "h": 10, + "w": 12, "x": 0, - "y": 15 - }, - "hiddenSeries": false, - "id": 43, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false + "y": 17 }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", + "id": 39, "options": { - "alertThreshold": true + "frameIndex": 0, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "Time" + } + ] }, - "percentage": false, "pluginVersion": "7.3.7", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { - "expr": "sum(kafka_connect_source_task_source_record_active_count{connector=~\"\\\".*SourceConnector\\\"\"})", + "exemplar": false, + "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_record_age_ms{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "format": "table", + "instant": true, "interval": "", - "legendFormat": "{{connector}}", + "legendFormat": "", "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Source Connector - Connect Outstanding Messages Queue", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ + }, { - "format": "short", - "label": "msgs", - "logBase": 1, - "max": null, - "min": null, - "show": true + "exemplar": true, + "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_record_age_ms_avg{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "B" }, { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "fieldConfig": { - "defaults": { - "custom": {} + "exemplar": true, + "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_record_age_ms_min{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "C" }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 8, - "x": 8, - "y": 15 - }, - "hiddenSeries": false, - "id": 44, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.3.7", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ { - "expr": "sum(kafka_producer_buffer_available_bytes{clientid=~\"\\\".*SourceConnector-[0-9]+\\\"\"})", + "exemplar": true, + "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_record_age_ms_max{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "format": "table", + "hide": false, + "instant": true, "interval": "", - "legendFormat": "{{clientid}}", - "refId": "A" + "legendFormat": "", + "refId": "D" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Source Connector - Producer Available Buffer", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ + "title": "Record Age", + "transformations": [ { - "format": "short", - "label": "bytes", - "logBase": 1, - "max": null, - "min": null, - "show": true + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "Time": 0, + "Value": 3, + "partition": 2, + "topic": 1 + }, + "renameByName": { + "Value": "Lag", + "partition": "Partition", + "topic": "Topic" + } + } }, { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": {}, + "renameByName": { + "Value #A": "Current", + "Value #Avg": "Average", + "Value #B": "Average", + "Value #C": "Min", + "Value #D": "Max", + "partition": "Partition", + "topic": "Topic", + "{partition=\"2\", topic=\"my-cluster-source.kafka-test-apps\"}": "Min" + } + } } ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "table" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 8, - "x": 16, - "y": 15 - }, - "hiddenSeries": false, - "id": 45, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.3.7", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(kafka_connect_connector_task_offset_commit_avg_time_ms{connector=~\"\\\".*SourceConnector\\\"\", task=~\"[0-9]+\"})/count(kafka_connect_connector_task_offset_commit_avg_time_ms{connector=~\"\\\".*SourceConnector\\\"\", task=~\"[0-9]+\"})", - "interval": "", - "legendFormat": "{{connector}}-{{task}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Source Connector - Average Offset Commit Time", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "ms", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "datasource": "${DS_PROMETHEUS}", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "auto", - "displayMode": "auto", - "filterable": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto", + "filterable": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } }, "overrides": [ { @@ -1336,19 +1273,19 @@ "properties": [ { "id": "custom.width", - "value": 146 + "value": 155 } ] } ] }, "gridPos": { - "h": 10, + "h": 5, "w": 12, - "x": 0, - "y": 23 + "x": 12, + "y": 17 }, - "id": 39, + "id": 40, "options": { "frameIndex": 0, "showHeader": true, @@ -1363,7 +1300,7 @@ "targets": [ { "exemplar": false, - "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_record_age_ms{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_replication_latency_ms{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", "format": "table", "instant": true, "interval": "", @@ -1372,7 +1309,7 @@ }, { "exemplar": true, - "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_record_age_ms_avg{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_replication_latency_ms_avg{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", "format": "table", "hide": false, "instant": true, @@ -1382,7 +1319,7 @@ }, { "exemplar": true, - "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_record_age_ms_min{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_replication_latency_ms_min{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", "format": "table", "hide": false, "instant": true, @@ -1392,7 +1329,7 @@ }, { "exemplar": true, - "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_record_age_ms_max{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_replication_latency_ms_max{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", "format": "table", "hide": false, "instant": true, @@ -1401,7 +1338,7 @@ "refId": "D" } ], - "title": "Record Age", + "title": "Replication Latency", "transformations": [ { "id": "organize", @@ -1555,6 +1492,18 @@ "value": 155 } ] + }, + { + "matcher": { + "id": "byName", + "options": "Source" + }, + "properties": [ + { + "id": "custom.width", + "value": 267 + } + ] } ] }, @@ -1562,9 +1511,9 @@ "h": 5, "w": 12, "x": 12, - "y": 23 + "y": 22 }, - "id": 40, + "id": 41, "options": { "frameIndex": 0, "showHeader": true, @@ -1579,7 +1528,7 @@ "targets": [ { "exemplar": false, - "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_replication_latency_ms{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "expr": "sum(kafka_connect_mirror_mirrorcheckpointconnector_checkpoint_latency_ms{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (source, target)", "format": "table", "instant": true, "interval": "", @@ -1588,7 +1537,7 @@ }, { "exemplar": true, - "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_replication_latency_ms_avg{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "expr": "sum(kafka_connect_mirror_mirrorcheckpointconnector_checkpoint_latency_ms_avg{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (source, target)", "format": "table", "hide": false, "instant": true, @@ -1598,7 +1547,7 @@ }, { "exemplar": true, - "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_replication_latency_ms_min{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "expr": "sum(kafka_connect_mirror_mirrorcheckpointconnector_checkpoint_latency_ms_min{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (source, target)", "format": "table", "hide": false, "instant": true, @@ -1608,7 +1557,7 @@ }, { "exemplar": true, - "expr": "sum(kafka_connect_mirror_mirrorsourceconnector_replication_latency_ms_max{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (partition, topic)", + "expr": "sum(kafka_connect_mirror_mirrorcheckpointconnector_checkpoint_latency_ms_max{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (source, target)", "format": "table", "hide": false, "instant": true, @@ -1617,7 +1566,7 @@ "refId": "D" } ], - "title": "Replication Latency", + "title": "Offset Synchronization Latency", "transformations": [ { "id": "organize", @@ -1652,6 +1601,8 @@ "Value #C": "Min", "Value #D": "Max", "partition": "Partition", + "source": "Source", + "target": "Target", "topic": "Topic", "{partition=\"2\", topic=\"my-cluster-source.kafka-test-apps\"}": "Min" } @@ -1660,6 +1611,102 @@ ], "type": "table" }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 34, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(kafka_consumer_fetch_manager_records_lag{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\",clientid!~\"consumer-mirrormaker2-.*\"}) by (topic, partition)", + "interval": "", + "legendFormat": "{{topic}} (partition: {{partition}})", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Consumer Lag", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, { "datasource": "${DS_PROMETHEUS}", "fieldConfig": { @@ -1687,208 +1734,494 @@ ] } }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "partition" + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 27 + }, + "id": 36, + "options": { + "showHeader": true + }, + "pluginVersion": "7.3.7", + "targets": [ + { + "exemplar": true, + "expr": "sum(kafka_consumer_fetch_manager_records_lag{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\",clientid!~\"consumer-mirrormaker2-.*\"}) by (partition, topic)", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "{{topic}} (partition: {{partition}})", + "refId": "A" + } + ], + "title": "Consumer Lag", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "Time": 0, + "Value": 3, + "partition": 2, + "topic": 1 }, - "properties": [ - { - "id": "custom.width", - "value": 76 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Partition" - }, - "properties": [ - { - "id": "custom.width", - "value": 76 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Current" - }, - "properties": [ - { - "id": "custom.width", - "value": 65 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Average" - }, - "properties": [ - { - "id": "custom.width", - "value": 70 - } - ] + "renameByName": { + "Value": "Lag", + "partition": "Partition", + "topic": "Topic" + } + } + } + ], + "type": "table" + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 36 + }, + "id": 53, + "panels": [], + "title": "Workers", + "type": "row" + }, + { + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": { + "align": null, + "filterable": false }, - { - "matcher": { - "id": "byName", - "options": "Min" - }, - "properties": [ + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ { - "id": "custom.width", - "value": 45 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Max" - }, - "properties": [ + "color": "green", + "value": null + }, { - "id": "custom.width", - "value": 41 + "color": "red", + "value": 80 } ] - }, - { - "matcher": { - "id": "byName", - "options": "Time" - }, - "properties": [ + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 12, + "x": 0, + "y": 37 + }, + "id": 55, + "options": { + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true + }, + "pluginVersion": "7.3.7", + "targets": [ + { + "expr": "sum(kafka_connect_coordinator_assigned_connectors{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (kubernetes_pod_name)", + "format": "time_series", + "instant": false, + "interval": "", + "legendFormat": "{{kubernetes_pod_name}}", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Assigned Connectors per Worker", + "type": "bargauge" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 37 + }, + "hiddenSeries": false, + "id": 59, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(kafka_connect_worker_rebalance_rebalancing{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"})", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Rebalancing", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 0, + "format": "short", + "label": null, + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {}, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ { - "id": "custom.width", - "value": 155 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Source" - }, - "properties": [ + "color": "green", + "value": null + }, { - "id": "custom.width", - "value": 267 + "color": "red", + "value": 80 } ] } - ] + }, + "overrides": [] }, "gridPos": { - "h": 5, + "h": 3, "w": 12, - "x": 12, - "y": 28 + "x": 0, + "y": 40 }, - "id": 41, + "id": 57, "options": { - "frameIndex": 0, - "showHeader": true, - "sortBy": [ - { - "desc": false, - "displayName": "Time" - } - ] + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true }, "pluginVersion": "7.3.7", "targets": [ { - "exemplar": false, - "expr": "sum(kafka_connect_mirror_mirrorcheckpointconnector_checkpoint_latency_ms{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (source, target)", - "format": "table", - "instant": true, + "expr": "sum(kafka_connect_coordinator_assigned_tasks{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (kubernetes_pod_name)", "interval": "", - "legendFormat": "", + "legendFormat": "{{kubernetes_pod_name}}", "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Assigned Tasks per Worker", + "type": "bargauge" + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 43 + }, + "id": 51, + "panels": [], + "title": "JVM", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 6, + "x": 0, + "y": 44 + }, + "hiddenSeries": false, + "id": 30, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ { - "exemplar": true, - "expr": "sum(kafka_connect_mirror_mirrorcheckpointconnector_checkpoint_latency_ms_avg{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (source, target)", - "format": "table", + "expr": "sum(rate(container_cpu_usage_seconds_total{namespace=\"$kubernetes_namespace\",pod=~\"$strimzi_mirror_maker_cluster_name-mirrormaker2-.+\",container=\"$strimzi_mirror_maker_cluster_name-mirrormaker2\"}[5m])) by (pod)", + "format": "time_series", "hide": false, - "instant": true, - "interval": "", - "legendFormat": "", - "refId": "B" + "intervalFactor": 2, + "legendFormat": "{{pod}}", + "metric": "", + "refId": "A", + "step": 4 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Usage", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "Cores", + "logBase": 1, + "max": null, + "min": null, + "show": true }, { - "exemplar": true, - "expr": "sum(kafka_connect_mirror_mirrorcheckpointconnector_checkpoint_latency_ms_min{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (source, target)", - "format": "table", - "hide": false, - "instant": true, - "interval": "", - "legendFormat": "", - "refId": "C" + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 6, + "x": 6, + "y": 44 + }, + "hiddenSeries": false, + "id": 31, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.7", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 4, + "stack": false, + "steppedLine": false, + "targets": [ { - "exemplar": true, - "expr": "sum(kafka_connect_mirror_mirrorcheckpointconnector_checkpoint_latency_ms_max{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (source, target)", - "format": "table", + "expr": "sum(jvm_memory_bytes_used{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (kubernetes_pod_name)", + "format": "time_series", "hide": false, - "instant": true, - "interval": "", - "legendFormat": "", - "refId": "D" + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "", + "refId": "A", + "step": 4 } ], - "title": "Offset Synchronization Latency", - "transformations": [ - { - "id": "organize", - "options": { - "excludeByName": {}, - "indexByName": { - "Time": 0, - "Value": 3, - "partition": 2, - "topic": 1 - }, - "renameByName": { - "Value": "Lag", - "partition": "Partition", - "topic": "Topic" - } - } - }, + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "JVM Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ { - "id": "merge", - "options": {} + "format": "bytes", + "label": "Memory", + "logBase": 1, + "max": null, + "min": null, + "show": true }, { - "id": "organize", - "options": { - "excludeByName": {}, - "indexByName": {}, - "renameByName": { - "Value #A": "Current", - "Value #Avg": "Average", - "Value #B": "Average", - "Value #C": "Min", - "Value #D": "Max", - "partition": "Partition", - "source": "Source", - "target": "Target", - "topic": "Topic", - "{partition=\"2\", topic=\"my-cluster-source.kafka-test-apps\"}": "Min" - } - } + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true } ], - "type": "table" + "yaxis": { + "align": false, + "alignLevel": null + } }, { "aliasColors": {}, @@ -1905,51 +2238,58 @@ "fill": 1, "fillGradient": 0, "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 33 + "h": 7, + "w": 6, + "x": 12, + "y": 44 }, "hiddenSeries": false, - "id": 34, + "id": 32, "legend": { + "alignAsTable": true, "avg": false, - "current": false, - "max": false, + "current": true, + "max": true, "min": false, "show": true, "total": false, - "values": false + "values": true }, "lines": true, "linewidth": 1, + "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "7.3.7", - "pointradius": 2, + "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, + "span": 4, "stack": false, "steppedLine": false, "targets": [ { - "exemplar": true, - "expr": "sum(kafka_consumer_fetch_manager_records_lag{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\",clientid!~\"consumer-mirrormaker2-.*\"}) by (topic, partition)", + "expr": "sum(rate(jvm_gc_collection_seconds_sum{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}[5m])) by (kubernetes_pod_name)", + "format": "time_series", + "hide": false, "interval": "", - "legendFormat": "{{topic}} (partition: {{partition}})", - "refId": "A" + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "metric": "", + "refId": "A", + "step": 4 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Consumer Lag", + "title": "Time Spent in GC", "tooltip": { "shared": true, "sort": 0, @@ -1965,10 +2305,10 @@ }, "yaxes": [ { - "format": "short", - "label": null, + "format": "percent", + "label": "% time in GC", "logBase": 1, - "max": null, + "max": "100", "min": null, "show": true }, @@ -1987,77 +2327,103 @@ } }, { - "datasource": "${DS_PROMETHEUS}", + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, "fieldConfig": { "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "auto", - "displayMode": "auto", - "filterable": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } + "custom": {} }, "overrides": [] }, + "fill": 1, + "fillGradient": 0, "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 33 + "h": 7, + "w": 6, + "x": 18, + "y": 44 }, - "id": 36, + "hiddenSeries": false, + "id": 49, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", "options": { - "showHeader": true + "alertThreshold": true }, + "percentage": false, "pluginVersion": "7.3.7", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "exemplar": true, - "expr": "sum(kafka_consumer_fetch_manager_records_lag{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\",clientid!~\"consumer-mirrormaker2-.*\"}) by (partition, topic)", - "format": "table", - "instant": true, + "expr": "sum(jvm_threads_current{strimzi_io_kind=~\"KafkaMirrorMaker2\",strimzi_io_cluster=\"$strimzi_mirror_maker_cluster_name\"}) by (kubernetes_pod_name)", + "instant": false, "interval": "", - "legendFormat": "{{topic}} (partition: {{partition}})", + "legendFormat": "{{kubernetes_pod_name}}", "refId": "A" } ], - "title": "Consumer Lag", - "transformations": [ + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "JVM Thread Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ { - "id": "organize", - "options": { - "excludeByName": {}, - "indexByName": { - "Time": 0, - "Value": 3, - "partition": 2, - "topic": 1 - }, - "renameByName": { - "Value": "Lag", - "partition": "Partition", - "topic": "Topic" - } - } + "decimals": 0, + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "decimals": null, + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true } ], - "type": "table" + "yaxis": { + "align": false, + "alignLevel": null + } } ], "refresh": "5s", @@ -2171,5 +2537,5 @@ "timezone": "", "title": "Strimzi Kafka Mirror Maker 2", "uid": "spCQwc0mz", - "version": 7 + "version": 8 } diff --git a/helm-charts/helm3/strimzi-kafka-operator/templates/020-ClusterRole-strimzi-cluster-operator-role.yaml b/helm-charts/helm3/strimzi-kafka-operator/templates/020-ClusterRole-strimzi-cluster-operator-role.yaml index b333bb87423..89e388b92d4 100644 --- a/helm-charts/helm3/strimzi-kafka-operator/templates/020-ClusterRole-strimzi-cluster-operator-role.yaml +++ b/helm-charts/helm3/strimzi-kafka-operator/templates/020-ClusterRole-strimzi-cluster-operator-role.yaml @@ -69,8 +69,6 @@ rules: resources: # The cluster operator needs to access and manage deployments to run deployment based Strimzi components - deployments - - deployments/scale - - deployments/status # The cluster operator needs to access and manage stateful sets to run stateful sets based Strimzi components - statefulsets # The cluster operator needs to access replica-sets to manage Strimzi components and to determine error states @@ -83,6 +81,15 @@ rules: - delete - patch - update +- apiGroups: + - "apps" + resources: + # The Cluster Operator needs to scale Deployments while migrating Connect and Mirror Maker 2 clusters from Deployments to StrimziPodSets + - deployments/scale + verbs: + - get + - patch + - update - apiGroups: - "" # legacy core events api, used by topic operator - "events.k8s.io" # new events api, used by cluster operator diff --git a/helm-charts/helm3/strimzi-kafka-operator/templates/023-ClusterRole-strimzi-cluster-operator-role.yaml b/helm-charts/helm3/strimzi-kafka-operator/templates/023-ClusterRole-strimzi-cluster-operator-role.yaml index 819ef72f7d1..55394c640a5 100644 --- a/helm-charts/helm3/strimzi-kafka-operator/templates/023-ClusterRole-strimzi-cluster-operator-role.yaml +++ b/helm-charts/helm3/strimzi-kafka-operator/templates/023-ClusterRole-strimzi-cluster-operator-role.yaml @@ -25,36 +25,36 @@ rules: - apiGroups: - "kafka.strimzi.io" resources: - # The cluster operator runs the KafkaAssemblyOperator, which needs to access and manage Kafka resources + # The Cluster Operator operates the Strimzi custom resources - kafkas - - kafkas/status - # The cluster operator runs the KafkaAssemblyOperator, which needs to access and manage KafkaNodePool resources - kafkanodepools - - kafkanodepools/status - # The cluster operator runs the KafkaConnectAssemblyOperator, which needs to access and manage KafkaConnect resources - kafkaconnects - - kafkaconnects/status - # The cluster operator runs the KafkaConnectorAssemblyOperator, which needs to access and manage KafkaConnector resources - kafkaconnectors - - kafkaconnectors/status - # The cluster operator runs the KafkaMirrorMakerAssemblyOperator, which needs to access and manage KafkaMirrorMaker resources - kafkamirrormakers - - kafkamirrormakers/status - # The cluster operator runs the KafkaBridgeAssemblyOperator, which needs to access and manage BridgeMaker resources - kafkabridges - - kafkabridges/status - # The cluster operator runs the KafkaMirrorMaker2AssemblyOperator, which needs to access and manage KafkaMirrorMaker2 resources - kafkamirrormaker2s - - kafkamirrormaker2s/status - # The cluster operator runs the KafkaRebalanceAssemblyOperator, which needs to access and manage KafkaRebalance resources - kafkarebalances - - kafkarebalances/status verbs: - get - list - watch - create - - delete + - patch + - update +- apiGroups: + - "kafka.strimzi.io" + resources: + # The Cluster Operator needs to manage the status of the Strimzi custom resources + - kafkas/status + - kafkanodepools/status + - kafkaconnects/status + - kafkaconnectors/status + - kafkamirrormakers/status + - kafkabridges/status + - kafkamirrormaker2s/status + - kafkarebalances/status + verbs: + - get - patch - update - apiGroups: @@ -62,7 +62,6 @@ rules: resources: # The cluster operator uses StrimziPodSets to manage the Kafka and ZooKeeper pods - strimzipodsets - - strimzipodsets/status verbs: - get - list @@ -71,4 +70,13 @@ rules: - delete - patch - update +- apiGroups: + - "core.strimzi.io" + resources: + # The Cluster Operator needs to manage the status of the StrimziPodSet custom resource + - strimzipodsets/status + verbs: + - get + - patch + - update {{- end -}} diff --git a/helm-charts/helm3/strimzi-kafka-operator/templates/031-ClusterRole-strimzi-entity-operator.yaml b/helm-charts/helm3/strimzi-kafka-operator/templates/031-ClusterRole-strimzi-entity-operator.yaml index dc0d7c9cb2e..86fb886aab4 100644 --- a/helm-charts/helm3/strimzi-kafka-operator/templates/031-ClusterRole-strimzi-entity-operator.yaml +++ b/helm-charts/helm3/strimzi-kafka-operator/templates/031-ClusterRole-strimzi-entity-operator.yaml @@ -13,12 +13,8 @@ rules: - apiGroups: - "kafka.strimzi.io" resources: - # The entity operator runs the KafkaTopic assembly operator, which needs to access and manage KafkaTopic resources + # The Entity Operator contains the Topic Operator which needs to access and manage KafkaTopic resources - kafkatopics - - kafkatopics/status - # The entity operator runs the KafkaUser assembly operator, which needs to access and manage KafkaUser resources - - kafkausers - - kafkausers/status verbs: - get - list @@ -27,6 +23,29 @@ rules: - patch - update - delete +- apiGroups: + - "kafka.strimzi.io" + resources: + # The Entity Operator contains the User Operator which needs to access and manage KafkaUser resources + - kafkausers + verbs: + - get + - list + - watch + - create + - patch + - update +- apiGroups: + - "kafka.strimzi.io" + resources: + # The Entity Operator contains the Topic Operator which needs to access and manage KafkaTopic resources + - kafkatopics/status + # The Entity Operator contains the User Operator which needs to access and manage KafkaUser resources + - kafkausers/status + verbs: + - get + - patch + - update - apiGroups: - "" resources: diff --git a/helm-charts/helm3/strimzi-kafka-operator/templates/051-PodDisruptionBudget-strimzi-cluster-operator.yaml b/helm-charts/helm3/strimzi-kafka-operator/templates/051-PodDisruptionBudget-strimzi-cluster-operator.yaml new file mode 100644 index 00000000000..eb461f33323 --- /dev/null +++ b/helm-charts/helm3/strimzi-kafka-operator/templates/051-PodDisruptionBudget-strimzi-cluster-operator.yaml @@ -0,0 +1,16 @@ +{{- if .Values.podDisruptionBudget.enabled -}} +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + name: strimzi-cluster-operator-pdb +spec: + selector: + matchLabels: + name: strimzi-cluster-operator + {{- if .Values.podDisruptionBudget.minAvailable }} + minAvailable: {{ .Values.podDisruptionBudget.minAvailable }} + {{- end }} + {{- if .Values.podDisruptionBudget.maxUnavailable }} + maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/helm-charts/helm3/strimzi-kafka-operator/templates/_kafka_image_map.tpl b/helm-charts/helm3/strimzi-kafka-operator/templates/_kafka_image_map.tpl index 6a6eb78a317..e9037302eea 100644 --- a/helm-charts/helm3/strimzi-kafka-operator/templates/_kafka_image_map.tpl +++ b/helm-charts/helm3/strimzi-kafka-operator/templates/_kafka_image_map.tpl @@ -6,29 +6,37 @@ {{/* Generate the kafka image map */}} {{- define "strimzi.kafka.image.map" }} - name: STRIMZI_DEFAULT_TLS_SIDECAR_ENTITY_OPERATOR_IMAGE - value: {{ template "strimzi.image" (merge . (dict "key" "tlsSidecarEntityOperator" "tagSuffix" "-kafka-3.6.0")) }} + value: {{ template "strimzi.image" (merge . (dict "key" "tlsSidecarEntityOperator" "tagSuffix" "-kafka-3.6.1")) }} - name: STRIMZI_DEFAULT_KAFKA_EXPORTER_IMAGE - value: {{ template "strimzi.image" (merge . (dict "key" "kafkaExporter" "tagSuffix" "-kafka-3.6.0")) }} + value: {{ template "strimzi.image" (merge . (dict "key" "kafkaExporter" "tagSuffix" "-kafka-3.6.1")) }} - name: STRIMZI_DEFAULT_CRUISE_CONTROL_IMAGE - value: {{ template "strimzi.image" (merge . (dict "key" "cruiseControl" "tagSuffix" "-kafka-3.6.0")) }} + value: {{ template "strimzi.image" (merge . (dict "key" "cruiseControl" "tagSuffix" "-kafka-3.6.1")) }} - name: STRIMZI_KAFKA_IMAGES value: | 3.5.0={{ template "strimzi.image" (merge . (dict "key" "kafka" "tagSuffix" "-kafka-3.5.0")) }} 3.5.1={{ template "strimzi.image" (merge . (dict "key" "kafka" "tagSuffix" "-kafka-3.5.1")) }} + 3.5.2={{ template "strimzi.image" (merge . (dict "key" "kafka" "tagSuffix" "-kafka-3.5.2")) }} 3.6.0={{ template "strimzi.image" (merge . (dict "key" "kafka" "tagSuffix" "-kafka-3.6.0")) }} + 3.6.1={{ template "strimzi.image" (merge . (dict "key" "kafka" "tagSuffix" "-kafka-3.6.1")) }} - name: STRIMZI_KAFKA_CONNECT_IMAGES value: | 3.5.0={{ template "strimzi.image" (merge . (dict "key" "kafkaConnect" "tagSuffix" "-kafka-3.5.0")) }} 3.5.1={{ template "strimzi.image" (merge . (dict "key" "kafkaConnect" "tagSuffix" "-kafka-3.5.1")) }} + 3.5.2={{ template "strimzi.image" (merge . (dict "key" "kafkaConnect" "tagSuffix" "-kafka-3.5.2")) }} 3.6.0={{ template "strimzi.image" (merge . (dict "key" "kafkaConnect" "tagSuffix" "-kafka-3.6.0")) }} + 3.6.1={{ template "strimzi.image" (merge . (dict "key" "kafkaConnect" "tagSuffix" "-kafka-3.6.1")) }} - name: STRIMZI_KAFKA_MIRROR_MAKER_IMAGES value: | 3.5.0={{ template "strimzi.image" (merge . (dict "key" "kafkaMirrorMaker" "tagSuffix" "-kafka-3.5.0")) }} 3.5.1={{ template "strimzi.image" (merge . (dict "key" "kafkaMirrorMaker" "tagSuffix" "-kafka-3.5.1")) }} + 3.5.2={{ template "strimzi.image" (merge . (dict "key" "kafkaMirrorMaker" "tagSuffix" "-kafka-3.5.2")) }} 3.6.0={{ template "strimzi.image" (merge . (dict "key" "kafkaMirrorMaker" "tagSuffix" "-kafka-3.6.0")) }} + 3.6.1={{ template "strimzi.image" (merge . (dict "key" "kafkaMirrorMaker" "tagSuffix" "-kafka-3.6.1")) }} - name: STRIMZI_KAFKA_MIRROR_MAKER_2_IMAGES value: | 3.5.0={{ template "strimzi.image" (merge . (dict "key" "kafkaMirrorMaker2" "tagSuffix" "-kafka-3.5.0")) }} 3.5.1={{ template "strimzi.image" (merge . (dict "key" "kafkaMirrorMaker2" "tagSuffix" "-kafka-3.5.1")) }} + 3.5.2={{ template "strimzi.image" (merge . (dict "key" "kafkaMirrorMaker2" "tagSuffix" "-kafka-3.5.2")) }} 3.6.0={{ template "strimzi.image" (merge . (dict "key" "kafkaMirrorMaker2" "tagSuffix" "-kafka-3.6.0")) }} + 3.6.1={{ template "strimzi.image" (merge . (dict "key" "kafkaMirrorMaker2" "tagSuffix" "-kafka-3.6.1")) }} {{- end -}} diff --git a/helm-charts/helm3/strimzi-kafka-operator/values.yaml b/helm-charts/helm3/strimzi-kafka-operator/values.yaml index b286acdae6a..78e49b88ca3 100644 --- a/helm-charts/helm3/strimzi-kafka-operator/values.yaml +++ b/helm-charts/helm3/strimzi-kafka-operator/values.yaml @@ -10,7 +10,7 @@ watchAnyNamespace: false defaultImageRegistry: quay.io defaultImageRepository: strimzi -defaultImageTag: 0.38.0 +defaultImageTag: 0.39.0 image: registry: "" @@ -53,6 +53,25 @@ serviceAccount: strimzi-cluster-operator leaderElection: enable: true +# https://kubernetes.io/docs/tasks/run-application/configure-pdb/ +podDisruptionBudget: + enabled: false + # The PDB definition only has two attributes to control the availability requirements: minAvailable or maxUnavailable (mutually exclusive). + # Field maxUnavailable tells how many pods can be down and minAvailable tells how many pods must be running in a cluster. + + # The pdb template will check values according to below order + # + # {{- if .Values.podDisruptionBudget.minAvailable }} + # minAvailable: {{ .Values.podDisruptionBudget.minAvailable }} + # {{- end }} + # {{- if .Values.podDisruptionBudget.maxUnavailable }} + # maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }} + # {{- end }} + # + # If both values are set, the template will use the first one and ignore the second one. currently by default minAvailable is set to 1 + minAvailable: 1 + maxUnavailable: + # If you are using the grafana dashboard sidecar, # you can import some default dashboards here dashboards: @@ -167,4 +186,4 @@ labelsExclusionPattern: "" # Controls whether Strimzi generates network policy resources (By default true) generateNetworkPolicy: true # Override the value for Connect build timeout -connectBuildTimeoutMs: 300000 +connectBuildTimeoutMs: 300000 \ No newline at end of file diff --git a/install/cluster-operator/020-ClusterRole-strimzi-cluster-operator-role.yaml b/install/cluster-operator/020-ClusterRole-strimzi-cluster-operator-role.yaml index 4c9446fe432..8aab3a6689d 100644 --- a/install/cluster-operator/020-ClusterRole-strimzi-cluster-operator-role.yaml +++ b/install/cluster-operator/020-ClusterRole-strimzi-cluster-operator-role.yaml @@ -64,8 +64,6 @@ rules: resources: # The cluster operator needs to access and manage deployments to run deployment based Strimzi components - deployments - - deployments/scale - - deployments/status # The cluster operator needs to access and manage stateful sets to run stateful sets based Strimzi components - statefulsets # The cluster operator needs to access replica-sets to manage Strimzi components and to determine error states @@ -78,6 +76,15 @@ rules: - delete - patch - update + - apiGroups: + - "apps" + resources: + # The Cluster Operator needs to scale Deployments while migrating Connect and Mirror Maker 2 clusters from Deployments to StrimziPodSets + - deployments/scale + verbs: + - get + - patch + - update - apiGroups: - "" # legacy core events api, used by topic operator - "events.k8s.io" # new events api, used by cluster operator diff --git a/install/cluster-operator/023-ClusterRole-strimzi-cluster-operator-role.yaml b/install/cluster-operator/023-ClusterRole-strimzi-cluster-operator-role.yaml index be50508b8fe..d556a6b5b27 100644 --- a/install/cluster-operator/023-ClusterRole-strimzi-cluster-operator-role.yaml +++ b/install/cluster-operator/023-ClusterRole-strimzi-cluster-operator-role.yaml @@ -20,36 +20,36 @@ rules: - apiGroups: - "kafka.strimzi.io" resources: - # The cluster operator runs the KafkaAssemblyOperator, which needs to access and manage Kafka resources + # The Cluster Operator operates the Strimzi custom resources - kafkas - - kafkas/status - # The cluster operator runs the KafkaAssemblyOperator, which needs to access and manage KafkaNodePool resources - kafkanodepools - - kafkanodepools/status - # The cluster operator runs the KafkaConnectAssemblyOperator, which needs to access and manage KafkaConnect resources - kafkaconnects - - kafkaconnects/status - # The cluster operator runs the KafkaConnectorAssemblyOperator, which needs to access and manage KafkaConnector resources - kafkaconnectors - - kafkaconnectors/status - # The cluster operator runs the KafkaMirrorMakerAssemblyOperator, which needs to access and manage KafkaMirrorMaker resources - kafkamirrormakers - - kafkamirrormakers/status - # The cluster operator runs the KafkaBridgeAssemblyOperator, which needs to access and manage BridgeMaker resources - kafkabridges - - kafkabridges/status - # The cluster operator runs the KafkaMirrorMaker2AssemblyOperator, which needs to access and manage KafkaMirrorMaker2 resources - kafkamirrormaker2s - - kafkamirrormaker2s/status - # The cluster operator runs the KafkaRebalanceAssemblyOperator, which needs to access and manage KafkaRebalance resources - kafkarebalances - - kafkarebalances/status verbs: - get - list - watch - create - - delete + - patch + - update + - apiGroups: + - "kafka.strimzi.io" + resources: + # The Cluster Operator needs to manage the status of the Strimzi custom resources + - kafkas/status + - kafkanodepools/status + - kafkaconnects/status + - kafkaconnectors/status + - kafkamirrormakers/status + - kafkabridges/status + - kafkamirrormaker2s/status + - kafkarebalances/status + verbs: + - get - patch - update - apiGroups: @@ -57,7 +57,6 @@ rules: resources: # The cluster operator uses StrimziPodSets to manage the Kafka and ZooKeeper pods - strimzipodsets - - strimzipodsets/status verbs: - get - list @@ -66,3 +65,12 @@ rules: - delete - patch - update + - apiGroups: + - "core.strimzi.io" + resources: + # The Cluster Operator needs to manage the status of the StrimziPodSet custom resource + - strimzipodsets/status + verbs: + - get + - patch + - update diff --git a/install/cluster-operator/031-ClusterRole-strimzi-entity-operator.yaml b/install/cluster-operator/031-ClusterRole-strimzi-entity-operator.yaml index ab1bc442788..485e3e19d13 100644 --- a/install/cluster-operator/031-ClusterRole-strimzi-entity-operator.yaml +++ b/install/cluster-operator/031-ClusterRole-strimzi-entity-operator.yaml @@ -8,12 +8,8 @@ rules: - apiGroups: - "kafka.strimzi.io" resources: - # The entity operator runs the KafkaTopic assembly operator, which needs to access and manage KafkaTopic resources + # The Entity Operator contains the Topic Operator which needs to access and manage KafkaTopic resources - kafkatopics - - kafkatopics/status - # The entity operator runs the KafkaUser assembly operator, which needs to access and manage KafkaUser resources - - kafkausers - - kafkausers/status verbs: - get - list @@ -22,6 +18,29 @@ rules: - patch - update - delete + - apiGroups: + - "kafka.strimzi.io" + resources: + # The Entity Operator contains the User Operator which needs to access and manage KafkaUser resources + - kafkausers + verbs: + - get + - list + - watch + - create + - patch + - update + - apiGroups: + - "kafka.strimzi.io" + resources: + # The Entity Operator contains the Topic Operator which needs to access and manage KafkaTopic resources + - kafkatopics/status + # The Entity Operator contains the User Operator which needs to access and manage KafkaUser resources + - kafkausers/status + verbs: + - get + - patch + - update - apiGroups: - "" resources: diff --git a/install/cluster-operator/040-Crd-kafka.yaml b/install/cluster-operator/040-Crd-kafka.yaml index d304340431f..1d56d87ab1f 100644 --- a/install/cluster-operator/040-Crd-kafka.yaml +++ b/install/cluster-operator/040-Crd-kafka.yaml @@ -54,14 +54,17 @@ spec: properties: version: type: string - description: "The kafka broker version. Defaults to {DefaultKafkaVersion}. Consult the user documentation to understand the process required to upgrade or downgrade the version." + description: The Kafka broker version. Defaults to the latest version. Consult the user documentation to understand the process required to upgrade or downgrade the version. + metadataVersion: + type: string + description: "The KRaft metadata version used by the Kafka cluster. This property is ignored when running in ZooKeeper mode. If the property is not set, it defaults to the metadata version that corresponds to the `version` property." replicas: type: integer minimum: 1 description: The number of pods in the cluster. image: type: string - description: The docker image for the pods. The default value depends on the configured `Kafka.spec.kafka.version`. + description: "The container image used for Kafka pods. If the property is not set, the default Kafka image version is determined based on the `version` configuration. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration. Changing the Kafka image version does not automatically update the image versions for other components, such as Kafka Exporter. " listeners: type: array minItems: 1 @@ -812,7 +815,7 @@ spec: optional: type: boolean description: Reference to the key in the ConfigMap containing the configuration. - description: "ConfigMap entry where the Prometheus JMX Exporter configuration is stored. For details of the structure of this configuration, see the {JMXExporter}." + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' required: - type - valueFrom @@ -1262,7 +1265,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -1764,7 +1767,7 @@ spec: description: The number of pods in the cluster. image: type: string - description: The docker image for the pods. + description: "The container image used for ZooKeeper pods. If no image name is explicitly specified, it is determined based on the Kafka version set in `spec.kafka.version`. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration." storage: type: object properties: @@ -1946,7 +1949,7 @@ spec: optional: type: boolean description: Reference to the key in the ConfigMap containing the configuration. - description: "ConfigMap entry where the Prometheus JMX Exporter configuration is stored. For details of the structure of this configuration, see the {JMXExporter}." + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' required: - type - valueFrom @@ -2396,7 +2399,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -3507,7 +3510,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -3913,7 +3916,7 @@ spec: properties: image: type: string - description: The docker image for the pods. + description: "The container image used for Cruise Control pods. If no image name is explicitly specified, the image name corresponds to the name specified in the Cluster Operator configuration. If an image name is not defined in the Cluster Operator configuration, a default value is used." tlsSidecar: type: object properties: @@ -4539,7 +4542,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -4895,7 +4898,7 @@ spec: optional: type: boolean description: Reference to the key in the ConfigMap containing the configuration. - description: "ConfigMap entry where the Prometheus JMX Exporter configuration is stored. For details of the structure of this configuration, see the {JMXExporter}." + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' required: - type - valueFrom @@ -5394,7 +5397,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -5559,7 +5562,7 @@ spec: properties: image: type: string - description: The docker image for the pods. + description: "The container image used for the Kafka Exporter pods. If no image name is explicitly specified, the image name corresponds to the version specified in the Cluster Operator configuration. If an image name is not defined in the Cluster Operator configuration, a default value is used." groupRegex: type: string description: Regular expression to specify which consumer groups to collect. Default value is `.*`. @@ -6010,7 +6013,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -6317,4 +6320,7 @@ spec: kafkaVersion: type: string description: The version of Kafka currently deployed in the cluster. + kafkaMetadataVersion: + type: string + description: The KRaft metadata.version currently used by the Kafka cluster. description: "The status of the Kafka and ZooKeeper clusters, and Topic Operator." diff --git a/install/cluster-operator/041-Crd-kafkaconnect.yaml b/install/cluster-operator/041-Crd-kafkaconnect.yaml index 84c71e66718..3fbc541dd21 100644 --- a/install/cluster-operator/041-Crd-kafkaconnect.yaml +++ b/install/cluster-operator/041-Crd-kafkaconnect.yaml @@ -47,13 +47,13 @@ spec: properties: version: type: string - description: "The Kafka Connect version. Defaults to {DefaultKafkaVersion}. Consult the user documentation to understand the process required to upgrade or downgrade the version." + description: The Kafka Connect version. Defaults to the latest version. Consult the user documentation to understand the process required to upgrade or downgrade the version. replicas: type: integer description: The number of pods in the Kafka Connect group. Defaults to `3`. image: type: string - description: The docker image for the pods. + description: "The container image used for Kafka Connect pods. If no image name is explicitly specified, it is determined based on the `spec.version` configuration. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration." bootstrapServers: type: string description: Bootstrap servers to connect to. This should be given as a comma separated list of __:__ pairs. @@ -818,7 +818,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -1535,7 +1535,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -1725,7 +1725,7 @@ spec: description: Annotations added to the Kubernetes resource. description: Metadata applied to the resource. description: Template for Secret of the Kafka Connect Cluster JMX authentication. - description: "Template for Kafka Connect and Kafka Mirror Maker 2 resources. The template allows users to specify how the `Deployment`, `Pods` and `Service` are generated." + description: "Template for Kafka Connect and Kafka Mirror Maker 2 resources. The template allows users to specify how the `Pods`, `Service`, and other services are generated." externalConfiguration: type: object properties: @@ -1943,7 +1943,7 @@ spec: optional: type: boolean description: Reference to the key in the ConfigMap containing the configuration. - description: "ConfigMap entry where the Prometheus JMX Exporter configuration is stored. For details of the structure of this configuration, see the {JMXExporter}." + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' required: - type - valueFrom diff --git a/install/cluster-operator/045-Crd-kafkamirrormaker.yaml b/install/cluster-operator/045-Crd-kafkamirrormaker.yaml index 4778edce5e1..96b3fca3f81 100644 --- a/install/cluster-operator/045-Crd-kafkamirrormaker.yaml +++ b/install/cluster-operator/045-Crd-kafkamirrormaker.yaml @@ -57,14 +57,14 @@ spec: properties: version: type: string - description: "The Kafka MirrorMaker version. Defaults to {DefaultKafkaVersion}. Consult the documentation to understand the process required to upgrade or downgrade the version." + description: The Kafka MirrorMaker version. Defaults to the latest version. Consult the documentation to understand the process required to upgrade or downgrade the version. replicas: type: integer minimum: 0 description: The number of pods in the `Deployment`. image: type: string - description: The docker image for the pods. + description: "The container image used for Kafka MirrorMaker pods. If no image name is explicitly specified, it is determined based on the `spec.version` configuration. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration." consumer: type: object properties: @@ -530,7 +530,7 @@ spec: optional: type: boolean description: Reference to the key in the ConfigMap containing the configuration. - description: "ConfigMap entry where the Prometheus JMX Exporter configuration is stored. For details of the structure of this configuration, see the {JMXExporter}." + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' required: - type - valueFrom @@ -962,7 +962,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." diff --git a/install/cluster-operator/046-Crd-kafkabridge.yaml b/install/cluster-operator/046-Crd-kafkabridge.yaml index bdd91b8619c..dcbbb20fcc2 100644 --- a/install/cluster-operator/046-Crd-kafkabridge.yaml +++ b/install/cluster-operator/046-Crd-kafkabridge.yaml @@ -56,7 +56,7 @@ spec: description: The number of pods in the `Deployment`. Defaults to `1`. image: type: string - description: The docker image for the pods. + description: "The container image used for Kafka Bridge pods. If no image name is explicitly specified, the image name corresponds to the image specified in the Cluster Operator configuration. If an image name is not defined in the Cluster Operator configuration, a default value is used." bootstrapServers: type: string description: A list of host:port pairs for establishing the initial connection to the Kafka cluster. @@ -826,7 +826,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." diff --git a/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml b/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml index bc964aa8719..fc5fb7d0b3e 100644 --- a/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml +++ b/install/cluster-operator/048-Crd-kafkamirrormaker2.yaml @@ -47,13 +47,13 @@ spec: properties: version: type: string - description: "The Kafka Connect version. Defaults to {DefaultKafkaVersion}. Consult the user documentation to understand the process required to upgrade or downgrade the version." + description: The Kafka Connect version. Defaults to the latest version. Consult the user documentation to understand the process required to upgrade or downgrade the version. replicas: type: integer description: The number of pods in the Kafka Connect group. Defaults to `3`. image: type: string - description: The docker image for the pods. + description: "The container image used for Kafka Connect pods. If no image name is explicitly specified, it is determined based on the `spec.version` configuration. The image names are specifically mapped to corresponding versions in the Cluster Operator configuration." connectCluster: type: string description: The cluster alias used for Kafka Connect. The value must match the alias of the *target* Kafka cluster as specified in the `spec.clusters` configuration. The target Kafka cluster is used by the underlying Kafka Connect framework for its internal topics. @@ -963,7 +963,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -1680,7 +1680,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -1870,7 +1870,7 @@ spec: description: Annotations added to the Kubernetes resource. description: Metadata applied to the resource. description: Template for Secret of the Kafka Connect Cluster JMX authentication. - description: "Template for Kafka Connect and Kafka Mirror Maker 2 resources. The template allows users to specify how the `Deployment`, `Pods` and `Service` are generated." + description: "Template for Kafka Connect and Kafka Mirror Maker 2 resources. The template allows users to specify how the `Pods`, `Service`, and other services are generated." externalConfiguration: type: object properties: @@ -1985,7 +1985,7 @@ spec: optional: type: boolean description: Reference to the key in the ConfigMap containing the configuration. - description: "ConfigMap entry where the Prometheus JMX Exporter configuration is stored. For details of the structure of this configuration, see the {JMXExporter}." + description: 'ConfigMap entry where the Prometheus JMX Exporter configuration is stored. ' required: - type - valueFrom diff --git a/install/cluster-operator/04A-Crd-kafkanodepool.yaml b/install/cluster-operator/04A-Crd-kafkanodepool.yaml index 5598b6a479c..239749c8510 100644 --- a/install/cluster-operator/04A-Crd-kafkanodepool.yaml +++ b/install/cluster-operator/04A-Crd-kafkanodepool.yaml @@ -603,7 +603,7 @@ spec: description: The pod's tolerations. priorityClassName: type: string - description: "The name of the priority class used to assign priority to the pods. For more information about priority classes, see {K8sPriorityClass}." + description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." @@ -921,6 +921,14 @@ spec: clusterId: type: string description: Kafka cluster ID. + roles: + type: array + items: + type: string + enum: + - controller + - broker + description: The roles currently assigned to this pool. replicas: type: integer description: The current number of pods being used to provide this resource. diff --git a/install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml b/install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml index 5fc9e1e6559..0b3a05f69d5 100644 --- a/install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml +++ b/install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml @@ -27,7 +27,7 @@ spec: name: strimzi-cluster-operator containers: - name: strimzi-cluster-operator - image: quay.io/strimzi/operator:0.38.0 + image: quay.io/strimzi/operator:0.39.0 ports: - containerPort: 8080 name: http @@ -48,43 +48,51 @@ spec: - name: STRIMZI_OPERATION_TIMEOUT_MS value: "300000" - name: STRIMZI_DEFAULT_TLS_SIDECAR_ENTITY_OPERATOR_IMAGE - value: quay.io/strimzi/kafka:0.38.0-kafka-3.6.0 + value: quay.io/strimzi/kafka:0.39.0-kafka-3.6.1 - name: STRIMZI_DEFAULT_KAFKA_EXPORTER_IMAGE - value: quay.io/strimzi/kafka:0.38.0-kafka-3.6.0 + value: quay.io/strimzi/kafka:0.39.0-kafka-3.6.1 - name: STRIMZI_DEFAULT_CRUISE_CONTROL_IMAGE - value: quay.io/strimzi/kafka:0.38.0-kafka-3.6.0 + value: quay.io/strimzi/kafka:0.39.0-kafka-3.6.1 - name: STRIMZI_KAFKA_IMAGES value: | - 3.5.0=quay.io/strimzi/kafka:0.38.0-kafka-3.5.0 - 3.5.1=quay.io/strimzi/kafka:0.38.0-kafka-3.5.1 - 3.6.0=quay.io/strimzi/kafka:0.38.0-kafka-3.6.0 + 3.5.0=quay.io/strimzi/kafka:0.39.0-kafka-3.5.0 + 3.5.1=quay.io/strimzi/kafka:0.39.0-kafka-3.5.1 + 3.5.2=quay.io/strimzi/kafka:0.39.0-kafka-3.5.2 + 3.6.0=quay.io/strimzi/kafka:0.39.0-kafka-3.6.0 + 3.6.1=quay.io/strimzi/kafka:0.39.0-kafka-3.6.1 - name: STRIMZI_KAFKA_CONNECT_IMAGES value: | - 3.5.0=quay.io/strimzi/kafka:0.38.0-kafka-3.5.0 - 3.5.1=quay.io/strimzi/kafka:0.38.0-kafka-3.5.1 - 3.6.0=quay.io/strimzi/kafka:0.38.0-kafka-3.6.0 + 3.5.0=quay.io/strimzi/kafka:0.39.0-kafka-3.5.0 + 3.5.1=quay.io/strimzi/kafka:0.39.0-kafka-3.5.1 + 3.5.2=quay.io/strimzi/kafka:0.39.0-kafka-3.5.2 + 3.6.0=quay.io/strimzi/kafka:0.39.0-kafka-3.6.0 + 3.6.1=quay.io/strimzi/kafka:0.39.0-kafka-3.6.1 - name: STRIMZI_KAFKA_MIRROR_MAKER_IMAGES value: | - 3.5.0=quay.io/strimzi/kafka:0.38.0-kafka-3.5.0 - 3.5.1=quay.io/strimzi/kafka:0.38.0-kafka-3.5.1 - 3.6.0=quay.io/strimzi/kafka:0.38.0-kafka-3.6.0 + 3.5.0=quay.io/strimzi/kafka:0.39.0-kafka-3.5.0 + 3.5.1=quay.io/strimzi/kafka:0.39.0-kafka-3.5.1 + 3.5.2=quay.io/strimzi/kafka:0.39.0-kafka-3.5.2 + 3.6.0=quay.io/strimzi/kafka:0.39.0-kafka-3.6.0 + 3.6.1=quay.io/strimzi/kafka:0.39.0-kafka-3.6.1 - name: STRIMZI_KAFKA_MIRROR_MAKER_2_IMAGES value: | - 3.5.0=quay.io/strimzi/kafka:0.38.0-kafka-3.5.0 - 3.5.1=quay.io/strimzi/kafka:0.38.0-kafka-3.5.1 - 3.6.0=quay.io/strimzi/kafka:0.38.0-kafka-3.6.0 + 3.5.0=quay.io/strimzi/kafka:0.39.0-kafka-3.5.0 + 3.5.1=quay.io/strimzi/kafka:0.39.0-kafka-3.5.1 + 3.5.2=quay.io/strimzi/kafka:0.39.0-kafka-3.5.2 + 3.6.0=quay.io/strimzi/kafka:0.39.0-kafka-3.6.0 + 3.6.1=quay.io/strimzi/kafka:0.39.0-kafka-3.6.1 - name: STRIMZI_DEFAULT_TOPIC_OPERATOR_IMAGE - value: quay.io/strimzi/operator:0.38.0 + value: quay.io/strimzi/operator:0.39.0 - name: STRIMZI_DEFAULT_USER_OPERATOR_IMAGE - value: quay.io/strimzi/operator:0.38.0 + value: quay.io/strimzi/operator:0.39.0 - name: STRIMZI_DEFAULT_KAFKA_INIT_IMAGE - value: quay.io/strimzi/operator:0.38.0 + value: quay.io/strimzi/operator:0.39.0 - name: STRIMZI_DEFAULT_KAFKA_BRIDGE_IMAGE value: quay.io/strimzi/kafka-bridge:0.27.0 - name: STRIMZI_DEFAULT_KANIKO_EXECUTOR_IMAGE - value: quay.io/strimzi/kaniko-executor:0.38.0 + value: quay.io/strimzi/kaniko-executor:0.39.0 - name: STRIMZI_DEFAULT_MAVEN_BUILDER - value: quay.io/strimzi/maven-builder:0.38.0 + value: quay.io/strimzi/maven-builder:0.39.0 - name: STRIMZI_OPERATOR_NAMESPACE valueFrom: fieldRef: diff --git a/install/strimzi-admin/010-ClusterRole-strimzi-admin.yaml b/install/strimzi-admin/010-ClusterRole-strimzi-admin.yaml index 844cffe755e..85f92eff115 100644 --- a/install/strimzi-admin/010-ClusterRole-strimzi-admin.yaml +++ b/install/strimzi-admin/010-ClusterRole-strimzi-admin.yaml @@ -13,19 +13,13 @@ rules: resources: - kafkas - kafkanodepools - - kafkanodepools/scale - kafkaconnects - - kafkaconnects/scale - kafkamirrormakers - - kafkamirrormakers/scale - kafkausers - kafkatopics - kafkabridges - - kafkabridges/scale - kafkaconnectors - - kafkaconnectors/scale - kafkamirrormaker2s - - kafkamirrormaker2s/scale - kafkarebalances verbs: - get @@ -35,6 +29,19 @@ rules: - delete - patch - update +- apiGroups: + - "kafka.strimzi.io" + resources: + - kafkanodepools/scale + - kafkaconnects/scale + - kafkamirrormakers/scale + - kafkabridges/scale + - kafkaconnectors/scale + - kafkamirrormaker2s/scale + verbs: + - get + - patch + - update - apiGroups: - "core.strimzi.io" resources: diff --git a/install/topic-operator/02-Role-strimzi-topic-operator.yaml b/install/topic-operator/02-Role-strimzi-topic-operator.yaml index e844a07efdd..9c798fd4c33 100644 --- a/install/topic-operator/02-Role-strimzi-topic-operator.yaml +++ b/install/topic-operator/02-Role-strimzi-topic-operator.yaml @@ -9,7 +9,6 @@ rules: - "kafka.strimzi.io" resources: - kafkatopics - - kafkatopics/status verbs: - get - list @@ -18,6 +17,14 @@ rules: - patch - update - delete +- apiGroups: + - "kafka.strimzi.io" + resources: + - kafkatopics/status + verbs: + - get + - patch + - update - apiGroups: - "" resources: diff --git a/install/topic-operator/05-Deployment-strimzi-topic-operator.yaml b/install/topic-operator/05-Deployment-strimzi-topic-operator.yaml index 9b60b445bae..7226645d429 100644 --- a/install/topic-operator/05-Deployment-strimzi-topic-operator.yaml +++ b/install/topic-operator/05-Deployment-strimzi-topic-operator.yaml @@ -22,7 +22,7 @@ spec: sizeLimit: 5Mi containers: - name: strimzi-topic-operator - image: quay.io/strimzi/operator:0.38.0 + image: quay.io/strimzi/operator:0.39.0 args: - /opt/strimzi/bin/topic_operator_run.sh volumeMounts: diff --git a/install/user-operator/02-Role-strimzi-user-operator.yaml b/install/user-operator/02-Role-strimzi-user-operator.yaml index 9381f1a97a9..8c972dd1d89 100644 --- a/install/user-operator/02-Role-strimzi-user-operator.yaml +++ b/install/user-operator/02-Role-strimzi-user-operator.yaml @@ -9,7 +9,6 @@ rules: - "kafka.strimzi.io" resources: - kafkausers - - kafkausers/status verbs: - get - list @@ -17,7 +16,14 @@ rules: - create - patch - update - - delete +- apiGroups: + - "kafka.strimzi.io" + resources: + - kafkausers/status + verbs: + - get + - patch + - update - apiGroups: - "" resources: diff --git a/install/user-operator/05-Deployment-strimzi-user-operator.yaml b/install/user-operator/05-Deployment-strimzi-user-operator.yaml index aa04ea2e57e..50f5b499ab3 100644 --- a/install/user-operator/05-Deployment-strimzi-user-operator.yaml +++ b/install/user-operator/05-Deployment-strimzi-user-operator.yaml @@ -22,7 +22,7 @@ spec: sizeLimit: 5Mi containers: - name: strimzi-user-operator - image: quay.io/strimzi/operator:0.38.0 + image: quay.io/strimzi/operator:0.39.0 args: - /opt/strimzi/bin/user_operator_run.sh volumeMounts: diff --git a/kafka-agent/pom.xml b/kafka-agent/pom.xml index dc6b3abd9d8..fcaba55e39b 100644 --- a/kafka-agent/pom.xml +++ b/kafka-agent/pom.xml @@ -5,7 +5,7 @@ strimzi io.strimzi - 0.39.0-SNAPSHOT + 0.39.0 4.0.0 diff --git a/kafka-init/pom.xml b/kafka-init/pom.xml index e7b20366605..44e4ed532c1 100644 --- a/kafka-init/pom.xml +++ b/kafka-init/pom.xml @@ -5,7 +5,7 @@ strimzi io.strimzi - 0.39.0-SNAPSHOT + 0.39.0 4.0.0 kafka-init diff --git a/mirror-maker-agent/pom.xml b/mirror-maker-agent/pom.xml index 5d366081a76..f5dbe40d25d 100644 --- a/mirror-maker-agent/pom.xml +++ b/mirror-maker-agent/pom.xml @@ -5,7 +5,7 @@ strimzi io.strimzi - 0.39.0-SNAPSHOT + 0.39.0 4.0.0 diff --git a/mockkube/pom.xml b/mockkube/pom.xml index f54fabd3768..92034bfb782 100644 --- a/mockkube/pom.xml +++ b/mockkube/pom.xml @@ -5,7 +5,7 @@ strimzi io.strimzi - 0.39.0-SNAPSHOT + 0.39.0 4.0.0 diff --git a/operator-common/pom.xml b/operator-common/pom.xml index 237e6598a3d..0d828928042 100644 --- a/operator-common/pom.xml +++ b/operator-common/pom.xml @@ -4,7 +4,7 @@ io.strimzi strimzi - 0.39.0-SNAPSHOT + 0.39.0 4.0.0 operator-common diff --git a/packaging/examples/security/keycloak-authorization/README.md b/packaging/examples/security/keycloak-authorization/README.md index 02feafcddde..98d1623c19a 100644 --- a/packaging/examples/security/keycloak-authorization/README.md +++ b/packaging/examples/security/keycloak-authorization/README.md @@ -7,13 +7,13 @@ This folder contains an example `Kafka` custom resource configured for OAuth 2.0 The folder also contains a Keycloak realm export to import into your Keycloak instance to support the example. -Full instructions for the example are available in the [Strimzi Documentation](https://strimzi.io/docs/operators/in-development/configuring.html#proc-oauth-authorization-keycloak-example_str). +Full instructions for the example are available in the [Strimzi Documentation](https://strimzi.io/docs/operators/0.39.0/configuring.html#proc-oauth-authorization-keycloak-example_str). - [kafka-authz-realm.json](./kafka-authz-realm.json) - The Keycloak realm export file - [kafka-ephemeral-oauth-single-keycloak-authz.yaml](./kafka-ephemeral-oauth-single-keycloak-authz.yaml) - The Kafka CR that defines a single-node Kafka cluster with `oauth` authentication and `keycloak` authorization, - using the `kafka-authz` realm. See [full example instructions](https://strimzi.io/docs/operators/in-development/configuring.html#proc-oauth-authorization-keycloak-example_str) for proper preparation and deployment. + using the `kafka-authz` realm. See [full example instructions](https://strimzi.io/docs/operators/0.39.0/configuring.html#proc-oauth-authorization-keycloak-example_str) for proper preparation and deployment. - [kafka-ephemeral-oauth-single-keycloak-authz-metrics.yaml](./kafka-ephemeral-oauth-single-keycloak-authz-metrics.yaml) - The Kafka CR that defines a single-node Kafka cluster with `oauth` authentication and `keycloak` authorization, with included configuration for exporting the OAuth metrics using Prometheus JMX exporter. diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/README.md b/packaging/helm-charts/helm3/strimzi-kafka-operator/README.md index 7707d0f27fc..4bdfe1eeebc 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/README.md +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/README.md @@ -95,7 +95,7 @@ the documentation for more details. | `watchAnyNamespace` | Watch the whole Kubernetes cluster (all namespaces) | `false` | | `defaultImageRegistry` | Default image registry for all the images | `quay.io` | | `defaultImageRepository` | Default image registry for all the images | `strimzi` | -| `defaultImageTag` | Default image tag for all the images except Kafka Bridge | `latest` | +| `defaultImageTag` | Default image tag for all the images except Kafka Bridge | `0.39.0` | | `image.registry` | Override default Cluster Operator image registry | `nil` | | `image.repository` | Override default Cluster Operator image repository | `nil` | | `image.name` | Cluster Operator image name | `cluster-operator` | diff --git a/packaging/helm-charts/helm3/strimzi-kafka-operator/values.yaml b/packaging/helm-charts/helm3/strimzi-kafka-operator/values.yaml index 97b36bc2050..78e49b88ca3 100644 --- a/packaging/helm-charts/helm3/strimzi-kafka-operator/values.yaml +++ b/packaging/helm-charts/helm3/strimzi-kafka-operator/values.yaml @@ -10,7 +10,7 @@ watchAnyNamespace: false defaultImageRegistry: quay.io defaultImageRepository: strimzi -defaultImageTag: latest +defaultImageTag: 0.39.0 image: registry: "" diff --git a/packaging/install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml b/packaging/install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml index 8723032d616..0b3a05f69d5 100644 --- a/packaging/install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml +++ b/packaging/install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml @@ -27,7 +27,7 @@ spec: name: strimzi-cluster-operator containers: - name: strimzi-cluster-operator - image: quay.io/strimzi/operator:latest + image: quay.io/strimzi/operator:0.39.0 ports: - containerPort: 8080 name: http @@ -48,51 +48,51 @@ spec: - name: STRIMZI_OPERATION_TIMEOUT_MS value: "300000" - name: STRIMZI_DEFAULT_TLS_SIDECAR_ENTITY_OPERATOR_IMAGE - value: quay.io/strimzi/kafka:latest-kafka-3.6.1 + value: quay.io/strimzi/kafka:0.39.0-kafka-3.6.1 - name: STRIMZI_DEFAULT_KAFKA_EXPORTER_IMAGE - value: quay.io/strimzi/kafka:latest-kafka-3.6.1 + value: quay.io/strimzi/kafka:0.39.0-kafka-3.6.1 - name: STRIMZI_DEFAULT_CRUISE_CONTROL_IMAGE - value: quay.io/strimzi/kafka:latest-kafka-3.6.1 + value: quay.io/strimzi/kafka:0.39.0-kafka-3.6.1 - name: STRIMZI_KAFKA_IMAGES value: | - 3.5.0=quay.io/strimzi/kafka:latest-kafka-3.5.0 - 3.5.1=quay.io/strimzi/kafka:latest-kafka-3.5.1 - 3.5.2=quay.io/strimzi/kafka:latest-kafka-3.5.2 - 3.6.0=quay.io/strimzi/kafka:latest-kafka-3.6.0 - 3.6.1=quay.io/strimzi/kafka:latest-kafka-3.6.1 + 3.5.0=quay.io/strimzi/kafka:0.39.0-kafka-3.5.0 + 3.5.1=quay.io/strimzi/kafka:0.39.0-kafka-3.5.1 + 3.5.2=quay.io/strimzi/kafka:0.39.0-kafka-3.5.2 + 3.6.0=quay.io/strimzi/kafka:0.39.0-kafka-3.6.0 + 3.6.1=quay.io/strimzi/kafka:0.39.0-kafka-3.6.1 - name: STRIMZI_KAFKA_CONNECT_IMAGES value: | - 3.5.0=quay.io/strimzi/kafka:latest-kafka-3.5.0 - 3.5.1=quay.io/strimzi/kafka:latest-kafka-3.5.1 - 3.5.2=quay.io/strimzi/kafka:latest-kafka-3.5.2 - 3.6.0=quay.io/strimzi/kafka:latest-kafka-3.6.0 - 3.6.1=quay.io/strimzi/kafka:latest-kafka-3.6.1 + 3.5.0=quay.io/strimzi/kafka:0.39.0-kafka-3.5.0 + 3.5.1=quay.io/strimzi/kafka:0.39.0-kafka-3.5.1 + 3.5.2=quay.io/strimzi/kafka:0.39.0-kafka-3.5.2 + 3.6.0=quay.io/strimzi/kafka:0.39.0-kafka-3.6.0 + 3.6.1=quay.io/strimzi/kafka:0.39.0-kafka-3.6.1 - name: STRIMZI_KAFKA_MIRROR_MAKER_IMAGES value: | - 3.5.0=quay.io/strimzi/kafka:latest-kafka-3.5.0 - 3.5.1=quay.io/strimzi/kafka:latest-kafka-3.5.1 - 3.5.2=quay.io/strimzi/kafka:latest-kafka-3.5.2 - 3.6.0=quay.io/strimzi/kafka:latest-kafka-3.6.0 - 3.6.1=quay.io/strimzi/kafka:latest-kafka-3.6.1 + 3.5.0=quay.io/strimzi/kafka:0.39.0-kafka-3.5.0 + 3.5.1=quay.io/strimzi/kafka:0.39.0-kafka-3.5.1 + 3.5.2=quay.io/strimzi/kafka:0.39.0-kafka-3.5.2 + 3.6.0=quay.io/strimzi/kafka:0.39.0-kafka-3.6.0 + 3.6.1=quay.io/strimzi/kafka:0.39.0-kafka-3.6.1 - name: STRIMZI_KAFKA_MIRROR_MAKER_2_IMAGES value: | - 3.5.0=quay.io/strimzi/kafka:latest-kafka-3.5.0 - 3.5.1=quay.io/strimzi/kafka:latest-kafka-3.5.1 - 3.5.2=quay.io/strimzi/kafka:latest-kafka-3.5.2 - 3.6.0=quay.io/strimzi/kafka:latest-kafka-3.6.0 - 3.6.1=quay.io/strimzi/kafka:latest-kafka-3.6.1 + 3.5.0=quay.io/strimzi/kafka:0.39.0-kafka-3.5.0 + 3.5.1=quay.io/strimzi/kafka:0.39.0-kafka-3.5.1 + 3.5.2=quay.io/strimzi/kafka:0.39.0-kafka-3.5.2 + 3.6.0=quay.io/strimzi/kafka:0.39.0-kafka-3.6.0 + 3.6.1=quay.io/strimzi/kafka:0.39.0-kafka-3.6.1 - name: STRIMZI_DEFAULT_TOPIC_OPERATOR_IMAGE - value: quay.io/strimzi/operator:latest + value: quay.io/strimzi/operator:0.39.0 - name: STRIMZI_DEFAULT_USER_OPERATOR_IMAGE - value: quay.io/strimzi/operator:latest + value: quay.io/strimzi/operator:0.39.0 - name: STRIMZI_DEFAULT_KAFKA_INIT_IMAGE - value: quay.io/strimzi/operator:latest + value: quay.io/strimzi/operator:0.39.0 - name: STRIMZI_DEFAULT_KAFKA_BRIDGE_IMAGE value: quay.io/strimzi/kafka-bridge:0.27.0 - name: STRIMZI_DEFAULT_KANIKO_EXECUTOR_IMAGE - value: quay.io/strimzi/kaniko-executor:latest + value: quay.io/strimzi/kaniko-executor:0.39.0 - name: STRIMZI_DEFAULT_MAVEN_BUILDER - value: quay.io/strimzi/maven-builder:latest + value: quay.io/strimzi/maven-builder:0.39.0 - name: STRIMZI_OPERATOR_NAMESPACE valueFrom: fieldRef: diff --git a/packaging/install/topic-operator/05-Deployment-strimzi-topic-operator.yaml b/packaging/install/topic-operator/05-Deployment-strimzi-topic-operator.yaml index 46aca5d3304..7226645d429 100644 --- a/packaging/install/topic-operator/05-Deployment-strimzi-topic-operator.yaml +++ b/packaging/install/topic-operator/05-Deployment-strimzi-topic-operator.yaml @@ -22,7 +22,7 @@ spec: sizeLimit: 5Mi containers: - name: strimzi-topic-operator - image: quay.io/strimzi/operator:latest + image: quay.io/strimzi/operator:0.39.0 args: - /opt/strimzi/bin/topic_operator_run.sh volumeMounts: diff --git a/packaging/install/user-operator/05-Deployment-strimzi-user-operator.yaml b/packaging/install/user-operator/05-Deployment-strimzi-user-operator.yaml index a45ad39226f..50f5b499ab3 100644 --- a/packaging/install/user-operator/05-Deployment-strimzi-user-operator.yaml +++ b/packaging/install/user-operator/05-Deployment-strimzi-user-operator.yaml @@ -22,7 +22,7 @@ spec: sizeLimit: 5Mi containers: - name: strimzi-user-operator - image: quay.io/strimzi/operator:latest + image: quay.io/strimzi/operator:0.39.0 args: - /opt/strimzi/bin/user_operator_run.sh volumeMounts: diff --git a/pom.xml b/pom.xml index 2e443ff9e62..bd0e30fcb71 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ io.strimzi strimzi pom - 0.39.0-SNAPSHOT + 0.39.0 diff --git a/release.version b/release.version index c8f4a56a310..4ef2eb086f5 100644 --- a/release.version +++ b/release.version @@ -1 +1 @@ -0.39.0-SNAPSHOT +0.39.0 diff --git a/systemtest/pom.xml b/systemtest/pom.xml index b512474f887..7d6fb442d13 100644 --- a/systemtest/pom.xml +++ b/systemtest/pom.xml @@ -5,7 +5,7 @@ strimzi io.strimzi - 0.39.0-SNAPSHOT + 0.39.0 4.0.0 systemtest diff --git a/test/pom.xml b/test/pom.xml index 4a86bab6d26..7acf101a929 100644 --- a/test/pom.xml +++ b/test/pom.xml @@ -5,7 +5,7 @@ strimzi io.strimzi - 0.39.0-SNAPSHOT + 0.39.0 4.0.0 diff --git a/topic-operator/pom.xml b/topic-operator/pom.xml index c7bcc5224c2..d91047da452 100644 --- a/topic-operator/pom.xml +++ b/topic-operator/pom.xml @@ -5,7 +5,7 @@ io.strimzi strimzi - 0.39.0-SNAPSHOT + 0.39.0 4.0.0 topic-operator diff --git a/tracing-agent/pom.xml b/tracing-agent/pom.xml index 5ae17242d15..6ae5205685f 100644 --- a/tracing-agent/pom.xml +++ b/tracing-agent/pom.xml @@ -5,7 +5,7 @@ strimzi io.strimzi - 0.39.0-SNAPSHOT + 0.39.0 4.0.0 diff --git a/user-operator/pom.xml b/user-operator/pom.xml index 5f557c771e0..02568a44139 100644 --- a/user-operator/pom.xml +++ b/user-operator/pom.xml @@ -4,7 +4,7 @@ io.strimzi strimzi - 0.39.0-SNAPSHOT + 0.39.0 4.0.0 user-operator