From dab890ceb24b9df897389f98f1aed8c030c8a24b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6ren=20Henning?= <soeren.henning@email.uni-kiel.de> Date: Thu, 1 Dec 2022 11:57:43 +0100 Subject: [PATCH] Add metrics to Hazelcast Hazelcast Jet benchmarks --- .../uc1-hazelcastjet-deployment.yaml | 27 ++++++++++++++++++- .../resources/uc1-hazelcastjet-service.yaml | 3 +++ .../resources/uc1-jmx-configmap.yaml | 10 +++++++ .../resources/uc1-service-monitor.yaml | 14 ++++++++++ .../uc1-hazelcastjet-benchmark-operator.yaml | 2 ++ .../uc2-hazelcastjet-deployment.yaml | 27 ++++++++++++++++++- .../resources/uc2-hazelcastjet-service.yaml | 2 ++ .../resources/uc2-jmx-configmap.yaml | 10 +++++++ .../resources/uc2-service-monitor.yaml | 14 ++++++++++ .../uc2-hazelcastjet-benchmark-operator.yaml | 2 ++ .../uc3-hazelcastjet-deployment.yaml | 27 ++++++++++++++++++- .../resources/uc3-hazelcastjet-service.yaml | 2 ++ .../resources/uc3-jmx-configmap.yaml | 10 +++++++ .../resources/uc3-service-monitor.yaml | 14 ++++++++++ .../uc3-hazelcastjet-benchmark-operator.yaml | 2 ++ .../uc4-hazelcastjet-deployment.yaml | 27 ++++++++++++++++++- .../resources/uc4-hazelcastjet-service.yaml | 2 ++ .../resources/uc4-jmx-configmap.yaml | 10 +++++++ .../resources/uc4-service-monitor.yaml | 14 ++++++++++ .../uc4-hazelcastjet-benchmark-operator.yaml | 2 ++ 20 files changed, 217 insertions(+), 4 deletions(-) create mode 100644 theodolite-benchmarks/definitions/uc1-hazelcastjet/resources/uc1-jmx-configmap.yaml create mode 100644 theodolite-benchmarks/definitions/uc1-hazelcastjet/resources/uc1-service-monitor.yaml create mode 100644 theodolite-benchmarks/definitions/uc2-hazelcastjet/resources/uc2-jmx-configmap.yaml create mode 100644 theodolite-benchmarks/definitions/uc2-hazelcastjet/resources/uc2-service-monitor.yaml create mode 100644 theodolite-benchmarks/definitions/uc3-hazelcastjet/resources/uc3-jmx-configmap.yaml create mode 100644 theodolite-benchmarks/definitions/uc3-hazelcastjet/resources/uc3-service-monitor.yaml create mode 100644 theodolite-benchmarks/definitions/uc4-hazelcastjet/resources/uc4-jmx-configmap.yaml create mode 100644 theodolite-benchmarks/definitions/uc4-hazelcastjet/resources/uc4-service-monitor.yaml 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 636fde258..cd2b7b293 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 845ce7dd5..99453c22b 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 000000000..714e11593 --- /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 000000000..4e7e758ca --- /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 7b4c08d95..6961f4452 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 0d9f73724..3d265bcd8 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 845ce7dd5..5c3b72813 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 000000000..714e11593 --- /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 000000000..4e7e758ca --- /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 cc2297d25..d51d06ce2 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 248dccb83..3e66eea00 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 845ce7dd5..5c3b72813 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 000000000..714e11593 --- /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 000000000..4e7e758ca --- /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 8f5586735..e986ec5d0 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 06fabde83..1cf62cba1 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 845ce7dd5..5c3b72813 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 000000000..714e11593 --- /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 000000000..4e7e758ca --- /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 6c9a43fb1..7bf62c20c 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: -- GitLab