diff --git a/theodolite-benchmarks/definitions/uc1-hazelcastjet/resources/uc1-hazelcastjet-deployment.yaml b/theodolite-benchmarks/definitions/uc1-hazelcastjet/resources/uc1-hazelcastjet-deployment.yaml
index 636fde2588f1a454471d1b491c83895266c0e5b9..cd2b7b293d5161bf8da69ef47ea855c46d453d8d 100644
--- a/theodolite-benchmarks/definitions/uc1-hazelcastjet/resources/uc1-hazelcastjet-deployment.yaml
+++ b/theodolite-benchmarks/definitions/uc1-hazelcastjet/resources/uc1-hazelcastjet-deployment.yaml
@@ -16,6 +16,8 @@ spec:
       containers:
         - name: uc-application
           image: ghcr.io/cau-se/theodolite-uc1-hazelcastjet:latest
+          ports:
+            - containerPort: 5701
           env:
             - name: KAFKA_BOOTSTRAP_SERVERS
               value: "theodolite-kafka-kafka-bootstrap:9092"
@@ -27,7 +29,30 @@ spec:
                   fieldPath: metadata.namespace
             - name: KUBERNETES_DNS_NAME
               value: "titan-ccp-aggregation.$(KUBERNETES_NAMESPACE).svc.cluster.local"
+            - name: JAVA_OPTS
+              value: "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=5555"
           resources:
             limits:
               memory: 4Gi
-              cpu: 1000m
\ No newline at end of file
+              cpu: 1000m
+        - name: prometheus-jmx-exporter
+          image: "solsson/kafka-prometheus-jmx-exporter@sha256:6f82e2b0464f50da8104acd7363fb9b995001ddff77d248379f8788e78946143"
+          command:
+            - java
+            - -XX:+UnlockExperimentalVMOptions
+            - -XX:+UseCGroupMemoryLimitForHeap
+            - -XX:MaxRAMFraction=1
+            - -XshowSettings:vm
+            - -jar
+            - jmx_prometheus_httpserver.jar
+            - "5556"
+            - /etc/jmx-aggregation/jmx-prometheus.yml
+          ports:
+            - containerPort: 5556
+          volumeMounts:
+            - name: jmx-config
+              mountPath: /etc/jmx-aggregation
+      volumes:
+        - name: jmx-config
+          configMap:
+            name: aggregation-jmx-configmap
\ No newline at end of file
diff --git a/theodolite-benchmarks/definitions/uc1-hazelcastjet/resources/uc1-hazelcastjet-service.yaml b/theodolite-benchmarks/definitions/uc1-hazelcastjet/resources/uc1-hazelcastjet-service.yaml
index 845ce7dd55c6e5d45724ec1eeabf8789e704fe77..99453c22bd8f3239b78f88d3aabf3166a1023beb 100644
--- a/theodolite-benchmarks/definitions/uc1-hazelcastjet/resources/uc1-hazelcastjet-service.yaml
+++ b/theodolite-benchmarks/definitions/uc1-hazelcastjet/resources/uc1-hazelcastjet-service.yaml
@@ -14,3 +14,6 @@ spec:
       port: 5701
       targetPort: 5701
       protocol: TCP
+    - name: metrics
+      port: 5556
+
diff --git a/theodolite-benchmarks/definitions/uc1-hazelcastjet/resources/uc1-jmx-configmap.yaml b/theodolite-benchmarks/definitions/uc1-hazelcastjet/resources/uc1-jmx-configmap.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..714e1159325f6f35673f7d40d0b3cbb9e481097d
--- /dev/null
+++ b/theodolite-benchmarks/definitions/uc1-hazelcastjet/resources/uc1-jmx-configmap.yaml
@@ -0,0 +1,10 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: aggregation-jmx-configmap
+data:
+  jmx-prometheus.yml: |+
+    jmxUrl: service:jmx:rmi:///jndi/rmi://localhost:5555/jmxrmi
+    lowercaseOutputName: true
+    lowercaseOutputLabelNames: true
+    ssl: false
diff --git a/theodolite-benchmarks/definitions/uc1-hazelcastjet/resources/uc1-service-monitor.yaml b/theodolite-benchmarks/definitions/uc1-hazelcastjet/resources/uc1-service-monitor.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4e7e758cacb5086305efa26292ddef2afc958096
--- /dev/null
+++ b/theodolite-benchmarks/definitions/uc1-hazelcastjet/resources/uc1-service-monitor.yaml
@@ -0,0 +1,14 @@
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  labels:
+    app: titan-ccp-aggregation
+    appScope: titan-ccp
+  name: titan-ccp-aggregation
+spec:
+  selector:
+    matchLabels:
+        app: titan-ccp-aggregation
+  endpoints:
+    - port: metrics
+      interval: 10s
diff --git a/theodolite-benchmarks/definitions/uc1-hazelcastjet/uc1-hazelcastjet-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc1-hazelcastjet/uc1-hazelcastjet-benchmark-operator.yaml
index 7b4c08d95681ec0b9ce641d2953143e2382527f5..6961f4452a0f084074252c0ed0d0e0710ac45ac8 100644
--- a/theodolite-benchmarks/definitions/uc1-hazelcastjet/uc1-hazelcastjet-benchmark-operator.yaml
+++ b/theodolite-benchmarks/definitions/uc1-hazelcastjet/uc1-hazelcastjet-benchmark-operator.yaml
@@ -14,6 +14,8 @@ spec:
           files:
           - "uc1-hazelcastjet-deployment.yaml"
           - "uc1-hazelcastjet-service.yaml"
+          - "uc1-jmx-configmap.yaml"
+          - "uc1-service-monitor.yaml"
   loadGenerator:
     resources:
       - configMap:
diff --git a/theodolite-benchmarks/definitions/uc2-hazelcastjet/resources/uc2-hazelcastjet-deployment.yaml b/theodolite-benchmarks/definitions/uc2-hazelcastjet/resources/uc2-hazelcastjet-deployment.yaml
index 0d9f7372416049afd57bb35056ac39d4d7bdd75e..3d265bcd8360c5641d80ad08b59decf3c477eeaf 100644
--- a/theodolite-benchmarks/definitions/uc2-hazelcastjet/resources/uc2-hazelcastjet-deployment.yaml
+++ b/theodolite-benchmarks/definitions/uc2-hazelcastjet/resources/uc2-hazelcastjet-deployment.yaml
@@ -16,6 +16,8 @@ spec:
       containers:
         - name: uc-application
           image: ghcr.io/cau-se/theodolite-uc2-hazelcastjet:latest
+          ports:
+            - containerPort: 5701
           env:
             - name: KAFKA_BOOTSTRAP_SERVERS
               value: "theodolite-kafka-kafka-bootstrap:9092"
@@ -29,7 +31,30 @@ spec:
                   fieldPath: metadata.namespace
             - name: KUBERNETES_DNS_NAME
               value: "titan-ccp-aggregation.$(KUBERNETES_NAMESPACE).svc.cluster.local"
+            - name: JAVA_OPTS
+              value: "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=5555"
           resources:
             limits:
               memory: 4Gi
-              cpu: 1000m
\ No newline at end of file
+              cpu: 1000m
+        - name: prometheus-jmx-exporter
+          image: "solsson/kafka-prometheus-jmx-exporter@sha256:6f82e2b0464f50da8104acd7363fb9b995001ddff77d248379f8788e78946143"
+          command:
+            - java
+            - -XX:+UnlockExperimentalVMOptions
+            - -XX:+UseCGroupMemoryLimitForHeap
+            - -XX:MaxRAMFraction=1
+            - -XshowSettings:vm
+            - -jar
+            - jmx_prometheus_httpserver.jar
+            - "5556"
+            - /etc/jmx-aggregation/jmx-prometheus.yml
+          ports:
+            - containerPort: 5556
+          volumeMounts:
+            - name: jmx-config
+              mountPath: /etc/jmx-aggregation
+      volumes:
+        - name: jmx-config
+          configMap:
+            name: aggregation-jmx-configmap
diff --git a/theodolite-benchmarks/definitions/uc2-hazelcastjet/resources/uc2-hazelcastjet-service.yaml b/theodolite-benchmarks/definitions/uc2-hazelcastjet/resources/uc2-hazelcastjet-service.yaml
index 845ce7dd55c6e5d45724ec1eeabf8789e704fe77..5c3b72813e350a4f35fa91b2f7e7f5c67185ff96 100644
--- a/theodolite-benchmarks/definitions/uc2-hazelcastjet/resources/uc2-hazelcastjet-service.yaml
+++ b/theodolite-benchmarks/definitions/uc2-hazelcastjet/resources/uc2-hazelcastjet-service.yaml
@@ -14,3 +14,5 @@ spec:
       port: 5701
       targetPort: 5701
       protocol: TCP
+    - name: metrics
+      port: 5556
diff --git a/theodolite-benchmarks/definitions/uc2-hazelcastjet/resources/uc2-jmx-configmap.yaml b/theodolite-benchmarks/definitions/uc2-hazelcastjet/resources/uc2-jmx-configmap.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..714e1159325f6f35673f7d40d0b3cbb9e481097d
--- /dev/null
+++ b/theodolite-benchmarks/definitions/uc2-hazelcastjet/resources/uc2-jmx-configmap.yaml
@@ -0,0 +1,10 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: aggregation-jmx-configmap
+data:
+  jmx-prometheus.yml: |+
+    jmxUrl: service:jmx:rmi:///jndi/rmi://localhost:5555/jmxrmi
+    lowercaseOutputName: true
+    lowercaseOutputLabelNames: true
+    ssl: false
diff --git a/theodolite-benchmarks/definitions/uc2-hazelcastjet/resources/uc2-service-monitor.yaml b/theodolite-benchmarks/definitions/uc2-hazelcastjet/resources/uc2-service-monitor.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4e7e758cacb5086305efa26292ddef2afc958096
--- /dev/null
+++ b/theodolite-benchmarks/definitions/uc2-hazelcastjet/resources/uc2-service-monitor.yaml
@@ -0,0 +1,14 @@
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  labels:
+    app: titan-ccp-aggregation
+    appScope: titan-ccp
+  name: titan-ccp-aggregation
+spec:
+  selector:
+    matchLabels:
+        app: titan-ccp-aggregation
+  endpoints:
+    - port: metrics
+      interval: 10s
diff --git a/theodolite-benchmarks/definitions/uc2-hazelcastjet/uc2-hazelcastjet-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc2-hazelcastjet/uc2-hazelcastjet-benchmark-operator.yaml
index cc2297d25a0632ede0dc275b9d7921afd2ef62bb..d51d06ce2ed9a8e5f5ba2da29979792dade7043e 100644
--- a/theodolite-benchmarks/definitions/uc2-hazelcastjet/uc2-hazelcastjet-benchmark-operator.yaml
+++ b/theodolite-benchmarks/definitions/uc2-hazelcastjet/uc2-hazelcastjet-benchmark-operator.yaml
@@ -14,6 +14,8 @@ spec:
           files:
             - "uc2-hazelcastjet-deployment.yaml"
             - "uc2-hazelcastjet-service.yaml"
+            - "uc2-jmx-configmap.yaml"
+            - "uc2-service-monitor.yaml"
   loadGenerator:
     resources:
       - configMap:
diff --git a/theodolite-benchmarks/definitions/uc3-hazelcastjet/resources/uc3-hazelcastjet-deployment.yaml b/theodolite-benchmarks/definitions/uc3-hazelcastjet/resources/uc3-hazelcastjet-deployment.yaml
index 248dccb83191f273f073912905896be192df8b4c..3e66eea00ea5044365ddf123f216d9332fdd1052 100644
--- a/theodolite-benchmarks/definitions/uc3-hazelcastjet/resources/uc3-hazelcastjet-deployment.yaml
+++ b/theodolite-benchmarks/definitions/uc3-hazelcastjet/resources/uc3-hazelcastjet-deployment.yaml
@@ -16,6 +16,8 @@ spec:
       containers:
         - name: uc-application
           image: ghcr.io/cau-se/theodolite-uc3-hazelcastjet:latest
+          ports:
+            - containerPort: 5701
           env:
             - name: KAFKA_BOOTSTRAP_SERVERS
               value: "theodolite-kafka-kafka-bootstrap:9092"
@@ -29,7 +31,30 @@ spec:
                   fieldPath: metadata.namespace
             - name: KUBERNETES_DNS_NAME
               value: "titan-ccp-aggregation.$(KUBERNETES_NAMESPACE).svc.cluster.local"
+            - name: JAVA_OPTS
+              value: "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=5555"
           resources:
             limits:
               memory: 4Gi
-              cpu: 1000m
\ No newline at end of file
+              cpu: 1000m
+        - name: prometheus-jmx-exporter
+          image: "solsson/kafka-prometheus-jmx-exporter@sha256:6f82e2b0464f50da8104acd7363fb9b995001ddff77d248379f8788e78946143"
+          command:
+            - java
+            - -XX:+UnlockExperimentalVMOptions
+            - -XX:+UseCGroupMemoryLimitForHeap
+            - -XX:MaxRAMFraction=1
+            - -XshowSettings:vm
+            - -jar
+            - jmx_prometheus_httpserver.jar
+            - "5556"
+            - /etc/jmx-aggregation/jmx-prometheus.yml
+          ports:
+            - containerPort: 5556
+          volumeMounts:
+            - name: jmx-config
+              mountPath: /etc/jmx-aggregation
+      volumes:
+        - name: jmx-config
+          configMap:
+            name: aggregation-jmx-configmap
diff --git a/theodolite-benchmarks/definitions/uc3-hazelcastjet/resources/uc3-hazelcastjet-service.yaml b/theodolite-benchmarks/definitions/uc3-hazelcastjet/resources/uc3-hazelcastjet-service.yaml
index 845ce7dd55c6e5d45724ec1eeabf8789e704fe77..5c3b72813e350a4f35fa91b2f7e7f5c67185ff96 100644
--- a/theodolite-benchmarks/definitions/uc3-hazelcastjet/resources/uc3-hazelcastjet-service.yaml
+++ b/theodolite-benchmarks/definitions/uc3-hazelcastjet/resources/uc3-hazelcastjet-service.yaml
@@ -14,3 +14,5 @@ spec:
       port: 5701
       targetPort: 5701
       protocol: TCP
+    - name: metrics
+      port: 5556
diff --git a/theodolite-benchmarks/definitions/uc3-hazelcastjet/resources/uc3-jmx-configmap.yaml b/theodolite-benchmarks/definitions/uc3-hazelcastjet/resources/uc3-jmx-configmap.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..714e1159325f6f35673f7d40d0b3cbb9e481097d
--- /dev/null
+++ b/theodolite-benchmarks/definitions/uc3-hazelcastjet/resources/uc3-jmx-configmap.yaml
@@ -0,0 +1,10 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: aggregation-jmx-configmap
+data:
+  jmx-prometheus.yml: |+
+    jmxUrl: service:jmx:rmi:///jndi/rmi://localhost:5555/jmxrmi
+    lowercaseOutputName: true
+    lowercaseOutputLabelNames: true
+    ssl: false
diff --git a/theodolite-benchmarks/definitions/uc3-hazelcastjet/resources/uc3-service-monitor.yaml b/theodolite-benchmarks/definitions/uc3-hazelcastjet/resources/uc3-service-monitor.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4e7e758cacb5086305efa26292ddef2afc958096
--- /dev/null
+++ b/theodolite-benchmarks/definitions/uc3-hazelcastjet/resources/uc3-service-monitor.yaml
@@ -0,0 +1,14 @@
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  labels:
+    app: titan-ccp-aggregation
+    appScope: titan-ccp
+  name: titan-ccp-aggregation
+spec:
+  selector:
+    matchLabels:
+        app: titan-ccp-aggregation
+  endpoints:
+    - port: metrics
+      interval: 10s
diff --git a/theodolite-benchmarks/definitions/uc3-hazelcastjet/uc3-hazelcastjet-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc3-hazelcastjet/uc3-hazelcastjet-benchmark-operator.yaml
index 8f55867355fd365960d158ed496f919aaf0d1245..e986ec5d00b97d7e76c15ddaa3b3b6716a4a798b 100644
--- a/theodolite-benchmarks/definitions/uc3-hazelcastjet/uc3-hazelcastjet-benchmark-operator.yaml
+++ b/theodolite-benchmarks/definitions/uc3-hazelcastjet/uc3-hazelcastjet-benchmark-operator.yaml
@@ -14,6 +14,8 @@ spec:
           files:
             - "uc3-hazelcastjet-deployment.yaml"
             - "uc3-hazelcastjet-service.yaml"
+            - "uc3-jmx-configmap.yaml"
+            - "uc3-service-monitor.yaml"
   loadGenerator:
     resources:
       - configMap:
diff --git a/theodolite-benchmarks/definitions/uc4-hazelcastjet/resources/uc4-hazelcastjet-deployment.yaml b/theodolite-benchmarks/definitions/uc4-hazelcastjet/resources/uc4-hazelcastjet-deployment.yaml
index 06fabde838022e17faceef6df30fe7bfd6198e66..1cf62cba16471930df2e899702b59c243cb2c655 100644
--- a/theodolite-benchmarks/definitions/uc4-hazelcastjet/resources/uc4-hazelcastjet-deployment.yaml
+++ b/theodolite-benchmarks/definitions/uc4-hazelcastjet/resources/uc4-hazelcastjet-deployment.yaml
@@ -16,6 +16,8 @@ spec:
       containers:
         - name: uc-application
           image: ghcr.io/cau-se/theodolite-uc4-hazelcastjet:latest
+          ports:
+            - containerPort: 5701
           env:
             - name: KAFKA_BOOTSTRAP_SERVERS
               value: "theodolite-kafka-kafka-bootstrap:9092"
@@ -29,7 +31,30 @@ spec:
                   fieldPath: metadata.namespace
             - name: KUBERNETES_DNS_NAME
               value: "titan-ccp-aggregation.$(KUBERNETES_NAMESPACE).svc.cluster.local"
+            - name: JAVA_OPTS
+              value: "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=5555"
           resources:
             limits:
               memory: 4Gi
-              cpu: 1000m
\ No newline at end of file
+              cpu: 1000m
+        - name: prometheus-jmx-exporter
+          image: "solsson/kafka-prometheus-jmx-exporter@sha256:6f82e2b0464f50da8104acd7363fb9b995001ddff77d248379f8788e78946143"
+          command:
+            - java
+            - -XX:+UnlockExperimentalVMOptions
+            - -XX:+UseCGroupMemoryLimitForHeap
+            - -XX:MaxRAMFraction=1
+            - -XshowSettings:vm
+            - -jar
+            - jmx_prometheus_httpserver.jar
+            - "5556"
+            - /etc/jmx-aggregation/jmx-prometheus.yml
+          ports:
+            - containerPort: 5556
+          volumeMounts:
+            - name: jmx-config
+              mountPath: /etc/jmx-aggregation
+      volumes:
+        - name: jmx-config
+          configMap:
+            name: aggregation-jmx-configmap
diff --git a/theodolite-benchmarks/definitions/uc4-hazelcastjet/resources/uc4-hazelcastjet-service.yaml b/theodolite-benchmarks/definitions/uc4-hazelcastjet/resources/uc4-hazelcastjet-service.yaml
index 845ce7dd55c6e5d45724ec1eeabf8789e704fe77..5c3b72813e350a4f35fa91b2f7e7f5c67185ff96 100644
--- a/theodolite-benchmarks/definitions/uc4-hazelcastjet/resources/uc4-hazelcastjet-service.yaml
+++ b/theodolite-benchmarks/definitions/uc4-hazelcastjet/resources/uc4-hazelcastjet-service.yaml
@@ -14,3 +14,5 @@ spec:
       port: 5701
       targetPort: 5701
       protocol: TCP
+    - name: metrics
+      port: 5556
diff --git a/theodolite-benchmarks/definitions/uc4-hazelcastjet/resources/uc4-jmx-configmap.yaml b/theodolite-benchmarks/definitions/uc4-hazelcastjet/resources/uc4-jmx-configmap.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..714e1159325f6f35673f7d40d0b3cbb9e481097d
--- /dev/null
+++ b/theodolite-benchmarks/definitions/uc4-hazelcastjet/resources/uc4-jmx-configmap.yaml
@@ -0,0 +1,10 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: aggregation-jmx-configmap
+data:
+  jmx-prometheus.yml: |+
+    jmxUrl: service:jmx:rmi:///jndi/rmi://localhost:5555/jmxrmi
+    lowercaseOutputName: true
+    lowercaseOutputLabelNames: true
+    ssl: false
diff --git a/theodolite-benchmarks/definitions/uc4-hazelcastjet/resources/uc4-service-monitor.yaml b/theodolite-benchmarks/definitions/uc4-hazelcastjet/resources/uc4-service-monitor.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4e7e758cacb5086305efa26292ddef2afc958096
--- /dev/null
+++ b/theodolite-benchmarks/definitions/uc4-hazelcastjet/resources/uc4-service-monitor.yaml
@@ -0,0 +1,14 @@
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  labels:
+    app: titan-ccp-aggregation
+    appScope: titan-ccp
+  name: titan-ccp-aggregation
+spec:
+  selector:
+    matchLabels:
+        app: titan-ccp-aggregation
+  endpoints:
+    - port: metrics
+      interval: 10s
diff --git a/theodolite-benchmarks/definitions/uc4-hazelcastjet/uc4-hazelcastjet-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc4-hazelcastjet/uc4-hazelcastjet-benchmark-operator.yaml
index 6c9a43fb1e1fc08d41adb28bcf4cbcff6df0555f..7bf62c20c541a48a1e0c78bd68e9ce9e1f0af558 100644
--- a/theodolite-benchmarks/definitions/uc4-hazelcastjet/uc4-hazelcastjet-benchmark-operator.yaml
+++ b/theodolite-benchmarks/definitions/uc4-hazelcastjet/uc4-hazelcastjet-benchmark-operator.yaml
@@ -14,6 +14,8 @@ spec:
           files:
             - "uc4-hazelcastjet-deployment.yaml"
             - "uc4-hazelcastjet-service.yaml"
+            - "uc4-jmx-configmap.yaml"
+            - "uc4-service-monitor.yaml"
   loadGenerator:
     resources:
       - configMap: