diff --git a/debezium-server-bom/pom.xml b/debezium-server-bom/pom.xml index 12a9fcca..9661e2d4 100644 --- a/debezium-server-bom/pom.xml +++ b/debezium-server-bom/pom.xml @@ -21,6 +21,7 @@ 2.16.3 2.2.3 1.2 + 1.0.1 2.0.1 @@ -28,6 +29,12 @@ + + + io.prometheus.jmx + jmx_prometheus_javaagent + ${version.jmx.exporter} + commons-logging diff --git a/debezium-server-dist/pom.xml b/debezium-server-dist/pom.xml index ee6ecea4..1eca9e2c 100644 --- a/debezium-server-dist/pom.xml +++ b/debezium-server-dist/pom.xml @@ -54,6 +54,10 @@ false + + io.prometheus.jmx + jmx_prometheus_javaagent + io.debezium debezium-connector-mysql diff --git a/debezium-server-dist/src/main/resources/assemblies/server-distribution.xml b/debezium-server-dist/src/main/resources/assemblies/server-distribution.xml index c6ac6307..c528e8af 100644 --- a/debezium-server-dist/src/main/resources/assemblies/server-distribution.xml +++ b/debezium-server-dist/src/main/resources/assemblies/server-distribution.xml @@ -28,6 +28,7 @@ io.debezium:debezium-connector-cassandra-3 io.debezium:debezium-connector-cassandra-4 io.debezium:debezium-connector-dse + io.prometheus.jmx:jmx_prometheus_javaagent:* @@ -44,6 +45,16 @@ jakarta.validation:*:* + + ${project.parent.artifactId}/lib_metrics + false + runtime + false + true + + io.prometheus.jmx:jmx_prometheus_javaagent:* + + ${project.parent.artifactId}/lib_opt false diff --git a/debezium-server-dist/src/main/resources/distro/conf/metrics.yml b/debezium-server-dist/src/main/resources/distro/conf/metrics.yml new file mode 100644 index 00000000..30574fdd --- /dev/null +++ b/debezium-server-dist/src/main/resources/distro/conf/metrics.yml @@ -0,0 +1,39 @@ +startDelaySeconds: 0 +ssl: false +lowercaseOutputName: false +lowercaseOutputLabelNames: false +rules: +- pattern : "kafka.connect([^:]+):" + name: "kafka_connect_worker_metrics_$1" +- pattern : "kafka.connect<>([^:]+)" + name: "kafka_connect_metrics_$2" + labels: + client: "$1" +- pattern: "debezium.([^:]+)]+)><>RowsScanned" + name: "debezium_metrics_RowsScanned" + labels: + plugin: "$1" + name: "$3" + context: "$2" + table: "$4" +- pattern: "debezium.([^:]+)]+)>([^:]+)" + name: "debezium_metrics_$6" + labels: + plugin: "$1" + name: "$2" + task: "$3" + context: "$4" + database: "$5" +- pattern: "debezium.([^:]+)]+)>([^:]+)" + name: "debezium_metrics_$5" + labels: + plugin: "$1" + name: "$2" + task: "$3" + context: "$4" +- pattern: "debezium.([^:]+)]+)>([^:]+)" + name: "debezium_metrics_$4" + labels: + plugin: "$1" + name: "$3" + context: "$2" diff --git a/debezium-server-dist/src/main/resources/distro/lib_metrics/enable_exporter.sh b/debezium-server-dist/src/main/resources/distro/lib_metrics/enable_exporter.sh new file mode 100644 index 00000000..0b39009c --- /dev/null +++ b/debezium-server-dist/src/main/resources/distro/lib_metrics/enable_exporter.sh @@ -0,0 +1,8 @@ +#!/bin/bash +# To enable Prometheus JMX exporter, set JMX_EXPORTER_PORT environment variable + +if [ -n "${JMX_EXPORTER_PORT}" ]; then + JMX_EXPORTER_CONFIG=${JMX_EXPORTER_CONFIG:-"conf/metrics.yml"} + JMX_EXPORTER_AGENT_JAR=$(find lib_metrics -name "jmx_prometheus_javaagent-*.jar") + export JAVA_OPTS="-javaagent:${JMX_EXPORTER_AGENT_JAR}=0.0.0.0:${JMX_EXPORTER_PORT}:${JMX_EXPORTER_CONFIG} ${JAVA_OPTS}" +fi \ No newline at end of file diff --git a/debezium-server-dist/src/main/resources/distro/run.sh b/debezium-server-dist/src/main/resources/distro/run.sh index 837889b1..e3477f29 100755 --- a/debezium-server-dist/src/main/resources/distro/run.sh +++ b/debezium-server-dist/src/main/resources/distro/run.sh @@ -46,6 +46,7 @@ if [[ "${ENABLE_DEBEZIUM_SCRIPTING}" == "true" ]]; then fi source ./jmx/enable_jmx.sh +source ./lib_metrics/enable_exporter.sh exec "$JAVA_BINARY" $DEBEZIUM_OPTS $JAVA_OPTS -cp \ $RUNNER$PATH_SEP"conf"$PATH_SEP$LIB_PATH io.debezium.server.Main \ No newline at end of file