Skip to content

Commit

Permalink
Upgrade to Prometheus Java Client v1.x
Browse files Browse the repository at this point in the history
  • Loading branch information
schnapster committed Dec 3, 2023
1 parent eea1a54 commit 9dcf539
Show file tree
Hide file tree
Showing 9 changed files with 209 additions and 196 deletions.
4 changes: 2 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ repositories {
// maven { url = uri("https://repo.spring.io/milestone") } // D4J snapshots
}

val prometheusVersion = "0.16.0"
val prometheusVersion = "1.1.0"
val dsProxyVersion = "1.9"
val jdaVersion = "5.0.0-beta.18"
val troveVersion = "3.0.3"
Expand All @@ -45,7 +45,7 @@ val mockitoVersion = "5.8.0"
val assertJVersion = "3.24.2"

dependencies {
api("io.prometheus:simpleclient:$prometheusVersion")
api("io.prometheus:prometheus-metrics-core:$prometheusVersion")

compileOnly("net.ttddyy:datasource-proxy:$dsProxyVersion")

Expand Down
36 changes: 18 additions & 18 deletions src/main/java/space/npstr/prometheus_extensions/DiscordMetrics.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@

package space.npstr.prometheus_extensions;

import io.prometheus.client.CollectorRegistry;
import io.prometheus.client.Counter;
import io.prometheus.client.Gauge;
import io.prometheus.client.Histogram;
import io.prometheus.client.Summary;
import io.prometheus.metrics.core.metrics.Counter;
import io.prometheus.metrics.core.metrics.Gauge;
import io.prometheus.metrics.core.metrics.Histogram;
import io.prometheus.metrics.core.metrics.Summary;
import io.prometheus.metrics.model.registry.PrometheusRegistry;

public class DiscordMetrics {

Expand All @@ -47,65 +47,65 @@ public class DiscordMetrics {
private final Histogram discordRestRequestResponseTime;
private final Counter discordRestHardFailures;

public DiscordMetrics(final CollectorRegistry registry) {
this.voiceChannelsConnected = Gauge.build()
public DiscordMetrics(final PrometheusRegistry registry) {
this.voiceChannelsConnected = Gauge.builder()
.name("discord_voicechannels_connected_current")
.help("How many voice channel is the bot connected to")
.register(registry);

this.discordEntities = Gauge.build()
this.discordEntities = Gauge.builder()
.name("discord_entities_current")
.help("How many entities are present")
.labelNames("type")
.register(registry);

this.unavailableGuilds = Gauge.build()
this.unavailableGuilds = Gauge.builder()
.name("discord_unavailable_guilds_current")
.help("How many guilds are unavailable")
.labelNames("shard")
.register(registry);


this.sessionStartLimitTotal = Gauge.build()
this.sessionStartLimitTotal = Gauge.builder()
.name("discord_session_start_limit_total")
.help("Maximum session start limit")
.register(registry);

this.sessionStartLimitRemaining = Gauge.build()
this.sessionStartLimitRemaining = Gauge.builder()
.name("discord_session_start_limit_remaining")
.help("Remaining session starts")
.register(registry);

this.recommendedShardCount = Gauge.build()
this.recommendedShardCount = Gauge.builder()
.name("discord_recommended_shard_count")
.help("Recommended shard count")
.register(registry);

this.events = Counter.build()
this.events = Counter.builder()
.name("discord_events_received_total")
.help("All received events by class")
.labelNames("class")
.register(registry);

this.closeCodes = Counter.build()
this.closeCodes = Counter.builder()
.name("discord_websocket_close_codes_total")
.help("Close codes of the main websocket connections")
.labelNames("code")
.register(registry);

this.discordRestRequests = Summary.build()
this.discordRestRequests = Summary.builder()
.name("discord_rest_request_seconds")
.help("Total Discord REST requests sent and their received responses")
.labelNames("method", "uri", "status", "error")
.register(registry);

this.discordRestRequestResponseTime = Histogram.build()
this.discordRestRequestResponseTime = Histogram.builder()
.name("discord_rest_request_response_time_seconds")
.exponentialBuckets(0.05, 1.2, 20)
.classicExponentialUpperBounds(0.05, 1.2, 20) // TODO use new native histograms when support becomes stable
.help("Discord REST request response time")
.register(registry);

this.discordRestHardFailures = Counter.build()
this.discordRestHardFailures = Counter.builder()
.name("discord_rest_request_hard_failures_total")
.help("Total Discord REST requests that experienced hard failures (not client response exceptions)")
.labelNames("method", "uri")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

package space.npstr.prometheus_extensions;

import io.prometheus.client.Counter;
import io.prometheus.metrics.core.metrics.Counter;
import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
Expand All @@ -41,7 +41,7 @@

public class OkHttpEventCounter extends EventListener {

private static final Counter httpEventCounter = Counter.build()
private static final Counter httpEventCounter = Counter.builder()
.name("okhttp_events_total")
.help("Total okhttp events")
.labelNames("instance", "event")
Expand All @@ -58,102 +58,102 @@ public OkHttpEventCounter(final String instanceLabel) {

@Override
public void callStart(final @NonNull Call call) {
httpEventCounter.labels(this.instanceLabel, "callStart").inc();
httpEventCounter.labelValues(this.instanceLabel, "callStart").inc();
}

@Override
public void dnsStart(@NonNull final Call call, @NonNull final String domainName) {
httpEventCounter.labels(this.instanceLabel, "dnsStart").inc();
httpEventCounter.labelValues(this.instanceLabel, "dnsStart").inc();
}

@Override
public void dnsEnd(@NonNull final Call call, @NonNull final String domainName, @NonNull final List<InetAddress> inetAddressList) {
httpEventCounter.labels(this.instanceLabel, "dnsEnd").inc();
httpEventCounter.labelValues(this.instanceLabel, "dnsEnd").inc();
}

@Override
public void connectStart(@NonNull final Call call, @NonNull final InetSocketAddress inetSocketAddress, @NonNull final Proxy proxy) {
httpEventCounter.labels(this.instanceLabel, "connectStart").inc();
httpEventCounter.labelValues(this.instanceLabel, "connectStart").inc();
}

@Override
public void secureConnectStart(@NonNull final Call call) {
httpEventCounter.labels(this.instanceLabel, "secureConnectStart").inc();
httpEventCounter.labelValues(this.instanceLabel, "secureConnectStart").inc();
}

@Override
public void secureConnectEnd(@NonNull final Call call, final Handshake handshake) {
httpEventCounter.labels(this.instanceLabel, "secureConnectEnd").inc();
httpEventCounter.labelValues(this.instanceLabel, "secureConnectEnd").inc();
}

@Override
public void connectEnd(@NonNull final Call call, @NonNull final InetSocketAddress inetSocketAddress, @NonNull final Proxy proxy, final Protocol protocol) {
httpEventCounter.labels(this.instanceLabel, "connectEnd").inc();
httpEventCounter.labelValues(this.instanceLabel, "connectEnd").inc();
}

@Override
public void connectFailed(@NonNull final Call call, @NonNull final InetSocketAddress inetSocketAddress, @NonNull final Proxy proxy, final Protocol protocol, @NonNull final IOException ioe) {
httpEventCounter.labels(this.instanceLabel, "connectFailed").inc();
httpEventCounter.labelValues(this.instanceLabel, "connectFailed").inc();
}

@Override
public void connectionAcquired(@NonNull final Call call, @NonNull final Connection connection) {
httpEventCounter.labels(this.instanceLabel, "connectionAcquired").inc();
httpEventCounter.labelValues(this.instanceLabel, "connectionAcquired").inc();
}

@Override
public void connectionReleased(@NonNull final Call call, @NonNull final Connection connection) {
httpEventCounter.labels(this.instanceLabel, "connectionReleased").inc();
httpEventCounter.labelValues(this.instanceLabel, "connectionReleased").inc();
}

@Override
public void requestHeadersStart(@NonNull final Call call) {
httpEventCounter.labels(this.instanceLabel, "requestHeadersStart").inc();
httpEventCounter.labelValues(this.instanceLabel, "requestHeadersStart").inc();
}

@Override
public void requestHeadersEnd(@NonNull final Call call, @NonNull final Request request) {
httpEventCounter.labels(this.instanceLabel, "requestHeadersEnd").inc();
httpEventCounter.labelValues(this.instanceLabel, "requestHeadersEnd").inc();
}

@Override
public void requestBodyStart(@NonNull final Call call) {
httpEventCounter.labels(this.instanceLabel, "requestBodyStart").inc();
httpEventCounter.labelValues(this.instanceLabel, "requestBodyStart").inc();
}

@Override
public void requestBodyEnd(@NonNull final Call call, final long byteCount) {
httpEventCounter.labels(this.instanceLabel, "requestBodyEnd").inc();
httpEventCounter.labelValues(this.instanceLabel, "requestBodyEnd").inc();
}

@Override
public void responseHeadersStart(@NonNull final Call call) {
httpEventCounter.labels(this.instanceLabel, "responseHeadersStart").inc();
httpEventCounter.labelValues(this.instanceLabel, "responseHeadersStart").inc();
}

@Override
public void responseHeadersEnd(@NonNull final Call call, @NonNull final Response response) {
httpEventCounter.labels(this.instanceLabel, "responseHeadersEnd").inc();
httpEventCounter.labelValues(this.instanceLabel, "responseHeadersEnd").inc();
}

@Override
public void responseBodyStart(@NonNull final Call call) {
httpEventCounter.labels(this.instanceLabel, "responseBodyStart").inc();
httpEventCounter.labelValues(this.instanceLabel, "responseBodyStart").inc();
}

@Override
public void responseBodyEnd(@NonNull final Call call, final long byteCount) {
httpEventCounter.labels(this.instanceLabel, "responseBodyEnd").inc();
httpEventCounter.labelValues(this.instanceLabel, "responseBodyEnd").inc();
}

@Override
public void callEnd(@NonNull final Call call) {
httpEventCounter.labels(this.instanceLabel, "callEnd").inc();
httpEventCounter.labelValues(this.instanceLabel, "callEnd").inc();
}

@Override
public void callFailed(@NonNull final Call call, @NonNull final IOException ioe) {
httpEventCounter.labels(this.instanceLabel, "callFailed").inc();
httpEventCounter.labelValues(this.instanceLabel, "callFailed").inc();
}
}

Loading

0 comments on commit 9dcf539

Please sign in to comment.