Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update prometheus lib to 1.1 #390

Merged
merged 3 commits into from
Mar 21, 2024
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
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
Loading