Skip to content
Snippets Groups Projects
Commit a97edd34 authored by Lorenz Boguhn's avatar Lorenz Boguhn
Browse files

Add operator integration of the tupp slo-checker

parent 344e849a
No related branches found
No related tags found
1 merge request!299Add Time Until Peak Processed SLO-Checker
Pipeline #9263 passed
......@@ -71,6 +71,24 @@ class SloCheckerFactory {
?: throw IllegalArgumentException("threshold expected"))
)
)
SloTypes.AVERAGE_LAG -> ExternalSloChecker(
externalSlopeURL = properties["externalSloUrl"]
?: throw IllegalArgumentException("externalSloUrl expected"),
metadata = mapOf(
"warmup" to (properties["warmup"]?.toInt()
?: throw IllegalArgumentException("warmup expected")),
"beforeWindowLength" to (properties["beforeWindowLength"]?.toInt()
?: throw IllegalArgumentException("beforeWindowLength expected")),
"ignoreDuring" to (properties["ignoreDuring"]?.toInt()
?: throw IllegalArgumentException("beforeWindowLength expected")),
"afterWindowLength" to (properties["afterWindowLength"]?.toInt()
?: throw IllegalArgumentException("afterWindowLength expected")),
"error" to (properties["error"]?.toDouble()
?: throw IllegalArgumentException("error expected")),
"ratio" to (properties["ratio"]?.toDouble()?.times(load)
?: throw IllegalArgumentException("Threshold ratio is incorrect"))
)
)
SloTypes.LAG_TREND_RATIO, SloTypes.DROPPED_RECORDS_RATIO -> {
val thresholdRatio =
properties["ratio"]?.toDouble()
......
......
......@@ -14,12 +14,13 @@ class SloConfigHandler {
fun getQueryString(slo: Slo): String {
return when (slo.sloType.lowercase()) {
SloTypes.GENERIC.value -> slo.properties["promQLQuery"] ?: throw IllegalArgumentException("promQLQuery expected")
SloTypes.LAG_TREND.value, SloTypes.LAG_TREND_RATIO.value -> slo.properties["promQLQuery"] ?:
SloTypes.LAG_TREND.value, SloTypes.LAG_TREND_RATIO.value, SloTypes.AVERAGE_LAG.value ->
slo.properties["promQLQuery"] ?:
(slo.properties["consumerGroup"]?.let { "{consumergroup='$it'}" } ?: "").let {
"sum by(consumergroup) ($DEFAULT_CONSUMER_LAG_METRIC_BASE$it >= 0)"
}
SloTypes.DROPPED_RECORDS.value, SloTypes.DROPPED_RECORDS_RATIO.value -> slo.properties["promQLQuery"] ?: DEFAULT_DROPPED_RECORDS_QUERY
SloTypes.LAG_TREND.value, SloTypes.LAG_TREND_RATIO.value -> slo.properties["promQLQuery"] ?: DEFAULT_CONSUMER_LAG_QUERY
SloTypes.LAG_TREND.value, SloTypes.LAG_TREND_RATIO.value, SloTypes.AVERAGE_LAG.value -> slo.properties["promQLQuery"] ?: DEFAULT_CONSUMER_LAG_QUERY
SloTypes.DROPPED_RECORDS.value, SloTypes.DROPPED_RECORDS_RATIO.value -> slo.properties["promQLQuery"] ?: DEFAULT_DROPPED_RECORDS_QUERY
else -> throw InvalidPatcherConfigurationException("Could not find Prometheus query string for slo type ${slo.sloType}")
}
......
......
......@@ -5,7 +5,9 @@ enum class SloTypes(val value: String) {
LAG_TREND("lag trend"),
LAG_TREND_RATIO("lag trend ratio"),
DROPPED_RECORDS("dropped records"),
DROPPED_RECORDS_RATIO("dropped records ratio");
DROPPED_RECORDS_RATIO("dropped records ratio"),
AVERAGE_LAG("average lag");
companion object {
fun from(type: String): SloTypes =
......
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment