Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,9 @@ dependencies {
implementation("io.netty:netty-common:4.1.121.Final")

implementation("io.github.microutils:kotlin-logging:3.0.5")
implementation("io.micrometer:micrometer-core:1.16.4")
implementation("org.slf4j:slf4j-jdk14:2.0.12")
implementation("io.dropwizard.metrics5:metrics-core:5.0.6")
implementation("io.dropwizard.metrics:metrics-core:4.2.38")

implementation("org.pkl-lang:pkl-config-java:0.30.2")
implementation("org.pkl-lang:pkl-codegen-java:0.30.2")
Expand Down
4 changes: 2 additions & 2 deletions src/main/kotlin/at/ac/uibk/dps/cirrina/Runtime.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ import at.ac.uibk.dps.cirrina.execution.service.ServiceImplementation
import at.ac.uibk.dps.cirrina.execution.service.ServiceImplementationSelector
import at.ac.uibk.dps.cirrina.io.CsmParser
import at.ac.uibk.dps.cirrina.spec.Csml as CsmlSpec
import io.dropwizard.metrics5.MetricRegistry
import io.dropwizard.metrics5.Timer
import com.codahale.metrics.MetricRegistry
import com.codahale.metrics.Timer
import jakarta.inject.Inject
import java.net.URI
import kotlin.time.measureTime
Expand Down
3 changes: 0 additions & 3 deletions src/main/kotlin/at/ac/uibk/dps/cirrina/di/CirrinaComponent.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,13 @@ import at.ac.uibk.dps.cirrina.cirrina.di.CirrinaModule
import at.ac.uibk.dps.cirrina.cirrina.di.Identifier
import at.ac.uibk.dps.cirrina.execution.`object`.Context
import dagger.Component
import io.dropwizard.metrics5.MetricRegistry
import jakarta.inject.Singleton

@Singleton
@Component(modules = [CirrinaModule::class])
interface CirrinaComponent {
fun persistentContext(): Context?

fun metricRegistry(): MetricRegistry

fun runtime(): Runtime

@Identifier fun identifier(): String
Expand Down
31 changes: 28 additions & 3 deletions src/main/kotlin/at/ac/uibk/dps/cirrina/di/CirrinaModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,17 @@ import at.ac.uibk.dps.cirrina.EnvironmentVariables
import at.ac.uibk.dps.cirrina.PersistentContextProvider
import at.ac.uibk.dps.cirrina.execution.`object`.Context
import at.ac.uibk.dps.cirrina.execution.provider.ContextEtcd
import com.codahale.metrics.CsvReporter
import com.codahale.metrics.MetricRegistry
import dagger.Module
import dagger.Provides
import io.dropwizard.metrics5.CsvReporter
import io.dropwizard.metrics5.MetricRegistry
import io.micrometer.core.instrument.Clock
import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics
import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics
import io.micrometer.core.instrument.binder.system.ProcessorMetrics
import io.micrometer.core.instrument.dropwizard.DropwizardConfig
import io.micrometer.core.instrument.dropwizard.DropwizardMeterRegistry
import io.micrometer.core.instrument.util.HierarchicalNameMapper
import jakarta.inject.Qualifier
import jakarta.inject.Singleton
import java.net.URI
Expand All @@ -31,7 +38,6 @@ class CirrinaModule {
when (EnvironmentVariables.contextProvider.get()) {
PersistentContextProvider.ETCD -> {
val url = EnvironmentVariables.etcdContextUrl.get() ?: return null

ContextEtcd(listOf(url))
}
}
Expand All @@ -46,6 +52,25 @@ class CirrinaModule {
CsvReporter.forRegistry(this)
.build(path.toFile())
.start(EnvironmentVariables.metricsPeriod.get(), TimeUnit.SECONDS)

object :
DropwizardMeterRegistry(
object : DropwizardConfig {
override fun get(key: String): String? = null

override fun prefix(): String = ""
},
this,
HierarchicalNameMapper.DEFAULT,
Clock.SYSTEM,
) {
override fun nullGaugeValue(): Double = Double.NaN
}
.apply {
ProcessorMetrics().bindTo(this)
JvmMemoryMetrics().bindTo(this)
JvmGcMetrics().bindTo(this)
}
}

@Provides @Singleton @Identifier fun provideIdentifier(): String = "cirrina.${UUID.randomUUID()}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ package at.ac.uibk.dps.cirrina.execution.`object`

import at.ac.uibk.dps.cirrina.csm.Csml.EventChannel
import at.ac.uibk.dps.cirrina.execution.service.ServiceImplementationSelector
import io.dropwizard.metrics5.MetricName
import io.dropwizard.metrics5.MetricRegistry
import com.codahale.metrics.MetricRegistry
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import mu.KotlinLogging
Expand Down Expand Up @@ -91,9 +90,15 @@ class ActionExecutor(

private fun executeCtr(action: CtrAction, scope: Scope): List<Action> {
val tags =
action.tag.entries.associate { (key, value) -> key to value.execute(scope.extent).toString() }
action.tag.entries.joinToString(".") { (key, value) -> "$key=${value.execute(scope.extent)}" }

val name =
if (tags.isEmpty()) {
action.counter
} else {
"${action.counter}.$tags"
}

val name = MetricName.build(action.counter).tagged(tags)
metricRegistry.counter(name).inc(action.by)

return emptyList()
Expand Down
4 changes: 2 additions & 2 deletions src/test/kotlin/at/ac/uibk/dps/cirrina/di/TestModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ import at.ac.uibk.dps.cirrina.cirrina.di.Identifier
import at.ac.uibk.dps.cirrina.cirrina.di.Main
import at.ac.uibk.dps.cirrina.cirrina.di.Run
import at.ac.uibk.dps.cirrina.execution.`object`.Context
import com.codahale.metrics.CsvReporter
import com.codahale.metrics.MetricRegistry
import dagger.Module
import dagger.Provides
import io.dropwizard.metrics5.CsvReporter
import io.dropwizard.metrics5.MetricRegistry
import jakarta.inject.Singleton
import java.io.File
import java.net.URI
Expand Down
Loading