Skip to content

Commit 4526844

Browse files
committed
refactor(model-server): implement metrics via generated base class
Use the generated base class from the OpenAPI generator to implement the metrics API.
1 parent bd8f04d commit 4526844

File tree

3 files changed

+15
-12
lines changed

3 files changed

+15
-12
lines changed

model-server-openapi/specifications/model-server-operative.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ paths:
2222
/metrics:
2323
get:
2424
operationId: getMetrics
25+
tags:
26+
- metrics
2527
responses:
2628
"200":
2729
$ref: '#/components/responses/200'

model-server/src/main/kotlin/org/modelix/model/server/Main.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ import org.modelix.model.server.handlers.HistoryHandler
6565
import org.modelix.model.server.handlers.HttpException
6666
import org.modelix.model.server.handlers.IdsApiImpl
6767
import org.modelix.model.server.handlers.KeyValueLikeModelServer
68-
import org.modelix.model.server.handlers.MetricsHandler
68+
import org.modelix.model.server.handlers.MetricsApiImpl
6969
import org.modelix.model.server.handlers.ModelReplicationServer
7070
import org.modelix.model.server.handlers.RepositoriesManager
7171
import org.modelix.model.server.handlers.RepositoryOverview
@@ -179,7 +179,7 @@ object Main {
179179
val historyHandler = HistoryHandler(localModelClient, repositoriesManager)
180180
val contentExplorer = ContentExplorer(localModelClient, repositoriesManager)
181181
val modelReplicationServer = ModelReplicationServer(repositoriesManager, localModelClient, inMemoryModels)
182-
val metricsHandler = MetricsHandler()
182+
val metricsApi = MetricsApiImpl()
183183

184184
val configureNetty: NettyApplicationEngine.Configuration.() -> Unit = {
185185
this.responseWriteTimeoutSeconds = cmdLineArgs.responseWriteTimeoutSeconds
@@ -217,7 +217,7 @@ object Main {
217217
contentExplorer.init(this)
218218
jsonModelServer.init(this)
219219
modelReplicationServer.init(this)
220-
metricsHandler.init(this)
220+
metricsApi.init(this)
221221
routing {
222222
IdsApiImpl(repositoriesManager, localModelClient).installRoutes(this)
223223

model-server/src/main/kotlin/org/modelix/model/server/handlers/MetricsHandler.kt renamed to model-server/src/main/kotlin/org/modelix/model/server/handlers/MetricsApiImpl.kt

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@
1717
package org.modelix.model.server.handlers
1818

1919
import io.ktor.server.application.Application
20+
import io.ktor.server.application.ApplicationCall
2021
import io.ktor.server.application.call
2122
import io.ktor.server.application.install
2223
import io.ktor.server.metrics.micrometer.MicrometerMetrics
23-
import io.ktor.server.resources.get
2424
import io.ktor.server.response.respond
25-
import io.ktor.server.routing.Route
2625
import io.ktor.server.routing.routing
26+
import io.ktor.util.pipeline.PipelineContext
2727
import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics
2828
import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics
2929
import io.micrometer.core.instrument.binder.jvm.JvmInfoMetrics
@@ -35,9 +35,12 @@ import io.micrometer.core.instrument.binder.system.UptimeMetrics
3535
import io.micrometer.core.instrument.distribution.DistributionStatisticConfig
3636
import io.micrometer.prometheusmetrics.PrometheusConfig
3737
import io.micrometer.prometheusmetrics.PrometheusMeterRegistry
38-
import org.modelix.api.operative.Paths
38+
import org.modelix.api.operative.MetricsApi
3939

40-
class MetricsHandler {
40+
/**
41+
* REST API implementation for providing micrometer metrics.
42+
*/
43+
class MetricsApiImpl : MetricsApi() {
4144

4245
private val appMicrometerRegistry = PrometheusMeterRegistry(PrometheusConfig.DEFAULT)
4346

@@ -63,14 +66,12 @@ class MetricsHandler {
6366
}
6467

6568
routing {
66-
installHandlers()
69+
installRoutes(this)
6770
}
6871
}
6972
}
7073

71-
private fun Route.installHandlers() {
72-
get<Paths.getMetrics> {
73-
call.respond(appMicrometerRegistry.scrape())
74-
}
74+
override suspend fun PipelineContext<Unit, ApplicationCall>.getMetrics() {
75+
call.respond(appMicrometerRegistry.scrape())
7576
}
7677
}

0 commit comments

Comments
 (0)