diff --git a/theodolite/src/main/kotlin/theodolite/evaluation/AnalysisExecutor.kt b/theodolite/src/main/kotlin/theodolite/evaluation/AnalysisExecutor.kt index 8e363a18e8f687c702771ae8797c44c122de4766..d1eadd0354de06000ca2c29522a1bc728c19581c 100644 --- a/theodolite/src/main/kotlin/theodolite/evaluation/AnalysisExecutor.kt +++ b/theodolite/src/main/kotlin/theodolite/evaluation/AnalysisExecutor.kt @@ -51,7 +51,7 @@ class AnalysisExecutor( fetcher.fetchMetric( start = interval.first, end = interval.second, - query = slo.query + query = SloConfigHandler.getQueryString(sloType = slo.sloType) ) } diff --git a/theodolite/src/main/kotlin/theodolite/evaluation/SloConfigHandler.kt b/theodolite/src/main/kotlin/theodolite/evaluation/SloConfigHandler.kt new file mode 100644 index 0000000000000000000000000000000000000000..38f21f58654e604ace26f87005d096fd13b22b2b --- /dev/null +++ b/theodolite/src/main/kotlin/theodolite/evaluation/SloConfigHandler.kt @@ -0,0 +1,21 @@ +package theodolite.evaluation + +import theodolite.util.InvalidPatcherConfigurationException +import theodolite.util.TheodoliteConfig +import javax.inject.Inject + +class SloConfigHandler { + + companion object { + @Inject + lateinit var config: TheodoliteConfig + + fun getQueryString(sloType: String): String { + return when (sloType){ + "Lag Trend" -> config.PROM_RECORD_LAG_QUERY + "Dropped Records" -> config.PROM_DROPPED_RECORDS_QUERY + else -> throw InvalidPatcherConfigurationException("Could not find Prometheus query string for slo type $sloType") + } + } + } +} \ No newline at end of file diff --git a/theodolite/src/main/kotlin/theodolite/util/TheodoliteConfig.kt b/theodolite/src/main/kotlin/theodolite/util/TheodoliteConfig.kt new file mode 100644 index 0000000000000000000000000000000000000000..3a2cbe8b94995ff1afd938f47cdf928a91eb3360 --- /dev/null +++ b/theodolite/src/main/kotlin/theodolite/util/TheodoliteConfig.kt @@ -0,0 +1,18 @@ +package theodolite.util + +import io.quarkus.arc.config.ConfigProperties +import org.eclipse.microprofile.config.inject.ConfigProperty +import javax.enterprise.context.ApplicationScoped +import javax.inject.Inject +import javax.inject.Singleton + + +@ApplicationScoped +class TheodoliteConfig{ + + @ConfigProperty(name = "prom.dropped.records.query") + lateinit var PROM_DROPPED_RECORDS_QUERY: String + + @ConfigProperty(name = "prom.record.lag.query") + lateinit var PROM_RECORD_LAG_QUERY: String +} \ No newline at end of file diff --git a/theodolite/src/main/resources/application.properties b/theodolite/src/main/resources/application.properties index 42647e2391706286602945cf2be7baa96857ba19..b888207f1314756784adeb60ecfe6529bee36bf3 100644 --- a/theodolite/src/main/resources/application.properties +++ b/theodolite/src/main/resources/application.properties @@ -4,3 +4,6 @@ quarkus.native.additional-build-args=\ --initialize-at-run-time=io.fabric8.kubernetes.client.dsl.internal.core.v1.PodOperationsImpl$1,\ --initialize-at-run-time=io.fabric8.kubernetes.client.dsl.internal.core.v1.PodOperationsImpl$3,\ --report-unsupported-elements-at-runtime + +prom.record.lag.query="sum by(group)(kafka_consumergroup_group_lag >= 0)" +prom.dropped.records.query="todo"