Skip to content

Commit

Permalink
Merge pull request #390 from Ecwid/ECWID-133682
Browse files Browse the repository at this point in the history
Update prometheus lib to 1.1
  • Loading branch information
Alexis2004 authored Mar 21, 2024
2 parents ae75fce + d86d845 commit 495cc1b
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 27 deletions.
4 changes: 2 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
java
signing
kotlin("jvm") version "1.9.21"
kotlin("jvm") version "1.9.23"
id("com.adarshr.test-logger") version "3.2.0"
id("nebula.release") version "17.1.0"
id("maven-publish")
Expand All @@ -26,7 +26,7 @@ dependencies {

api("com.google.code.gson:gson:2.10")
api("org.apache.httpcomponents:httpclient:4.5.13")
api("io.prometheus:simpleclient:0.16.0")
api("io.prometheus:prometheus-metrics-core:1.1.0")

testImplementation(kotlin("test"))
testImplementation("org.junit.jupiter:junit-jupiter:5.9.1")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@ data class SubscriptionsSearchRequest(
orderTotal?.let { put("orderTotal", it.toString()) }
orderCreatedFrom?.let { put("orderCreatedFrom", TimeUnit.MILLISECONDS.toSeconds(it.time).toString()) }
orderCreatedTo?.let { put("orderCreatedTo", TimeUnit.MILLISECONDS.toSeconds(it.time).toString()) }
offset?.let { put("offset", it.toString()) }
limit?.let { put("limit", it.toString()) }
put("offset", offset.toString())
put("limit", limit.toString())
put("sortBy", sortBy.name)
lang?.let { put("lang", it) }
}.toMap()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
package com.ecwid.apiclient.v3.metric

import io.prometheus.client.Counter
import io.prometheus.metrics.core.metrics.Counter

object RequestRetrySleepMetric {
private val metric: Counter = Counter
.build(
"ecwid_api_client_retry_sleep_seconds",
"Ecwid API client sleep during retries as result of rate limits (429 http)",
)
private val metric: Counter = Counter.builder()
.name("ecwid_api_client_retry_sleep_seconds_total")
.help("Ecwid API client sleep during retries as result of rate limits (429 http)")
.register()

fun inc() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,20 @@ import com.ecwid.apiclient.v3.httptransport.HttpRequest
import com.ecwid.apiclient.v3.httptransport.HttpResponse
import com.ecwid.apiclient.v3.httptransport.TransportHttpBody
import com.ecwid.apiclient.v3.impl.RequestInfo
import io.prometheus.client.Histogram
import io.prometheus.metrics.core.metrics.Histogram
import io.prometheus.metrics.model.snapshots.Unit
import java.util.concurrent.atomic.AtomicLong
import java.util.logging.Level
import java.util.logging.Logger

private val log = Logger.getLogger(RequestSizeMetric::class.qualifiedName)

object RequestSizeMetric {
private val metric: Histogram = Histogram
.build("ecwid_api_client_request_size_bytes", "Ecwid API client request size of parameters & body in bytes")
.buckets(
private val metric = Histogram.builder()
.name("ecwid_api_client_request_size_bytes")
.help("Ecwid API client request size of parameters & body in bytes")
.classicOnly()
.classicUpperBounds(
100.0,
500.0,
1_000.0,
Expand All @@ -32,6 +35,7 @@ object RequestSizeMetric {
100_000_000.0,
)
.labelNames("request_type", "path", "method", "status")
.unit(Unit.BYTES)
.register()

fun observeRequest(
Expand All @@ -41,7 +45,7 @@ object RequestSizeMetric {
httpResponse: HttpResponse,
) {
metric
.labels(
.labelValues(
apiRequest.javaClass.simpleName,
requestInfo.getFirstPathSegment(),
requestInfo.method.name,
Expand Down
17 changes: 10 additions & 7 deletions src/main/kotlin/com/ecwid/apiclient/v3/metric/RequestTimeMetric.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,17 @@ package com.ecwid.apiclient.v3.metric
import com.ecwid.apiclient.v3.dto.ApiRequest
import com.ecwid.apiclient.v3.httptransport.HttpResponse
import com.ecwid.apiclient.v3.impl.RequestInfo
import io.prometheus.client.Collector
import io.prometheus.client.Histogram
import io.prometheus.metrics.core.metrics.Histogram
import io.prometheus.metrics.model.snapshots.Unit

object RequestTimeMetric {
private val metric: Histogram = Histogram
.build("ecwid_api_client_request_latency", "Ecwid API client request latency")
.buckets(0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1.0, 2.5, 5.0, 7.5, 10.0, 25.0, 50.0, 100.0, 200.0)
private val metric = Histogram.builder()
.name("ecwid_api_client_request_latency")
.help("Ecwid API client request latency")
.classicOnly()
.classicUpperBounds(0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1.0, 2.5, 5.0, 7.5, 10.0, 25.0, 50.0, 100.0, 200.0)
.labelNames("request_type", "path", "method", "status")
.unit(Unit.SECONDS)
.register()

fun observeRequest(
Expand All @@ -20,12 +23,12 @@ object RequestTimeMetric {
httpResponse: HttpResponse,
) {
metric
.labels(
.labelValues(
apiRequest.javaClass.simpleName,
requestInfo.getFirstPathSegment(),
requestInfo.method.name,
extractStatusFromHttpResponse(httpResponse),
)
.observe(requestTimeMs / Collector.MILLISECONDS_PER_SECOND)
.observe(Unit.millisToSeconds(requestTimeMs))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,15 @@ package com.ecwid.apiclient.v3.metric
import com.ecwid.apiclient.v3.dto.ApiRequest
import com.ecwid.apiclient.v3.httptransport.HttpResponse
import com.ecwid.apiclient.v3.impl.RequestInfo
import io.prometheus.client.Histogram
import io.prometheus.metrics.core.metrics.Histogram
import io.prometheus.metrics.model.snapshots.Unit

object ResponseSizeMetric {
private val metric: Histogram = Histogram
.build("ecwid_api_client_response_size_bytes", "Ecwid API client response size in bytes")
.buckets(
private val metric = Histogram.builder()
.name("ecwid_api_client_response_size_bytes")
.help("Ecwid API client response size in bytes")
.classicOnly()
.classicUpperBounds(
100.0,
500.0,
1_000.0,
Expand All @@ -25,6 +28,7 @@ object ResponseSizeMetric {
100_000_000.0,
)
.labelNames("request_type", "path", "method", "status")
.unit(Unit.BYTES)
.register()

fun observeResponse(
Expand All @@ -33,7 +37,7 @@ object ResponseSizeMetric {
httpResponse: HttpResponse,
) {
metric
.labels(
.labelValues(
apiRequest.javaClass.simpleName,
requestInfo.getFirstPathSegment(),
requestInfo.method.name,
Expand Down

0 comments on commit 495cc1b

Please sign in to comment.