Skip to content

Commit

Permalink
Combine events, telemetry API, and metrics modules.
Browse files Browse the repository at this point in the history
  • Loading branch information
io7m committed Jun 16, 2023
1 parent b718d76 commit b2be579
Show file tree
Hide file tree
Showing 85 changed files with 246 additions and 450 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
import com.io7m.idstore.database.api.IdDatabaseType;
import com.io7m.idstore.database.postgres.internal.IdDatabase;
import com.io7m.jmulticlose.core.CloseableCollection;
import com.io7m.jmulticlose.core.CloseableCollectionType;
import com.io7m.trasco.api.TrEventExecutingSQL;
import com.io7m.trasco.api.TrEventType;
import com.io7m.trasco.api.TrEventUpgrading;
Expand Down Expand Up @@ -195,8 +194,8 @@ public IdDatabaseType open(
config.setPassword(configuration.password());
config.setAutoCommit(false);

final var dataSource = resources.add(new HikariDataSource(config));
createMetricsMeters(meter, resources, dataSource);
final var dataSource =
resources.add(new HikariDataSource(config));

final var parsers = new TrSchemaRevisionSetParsers();
final TrSchemaRevisionSet revisions;
Expand Down Expand Up @@ -266,59 +265,6 @@ public IdDatabaseType open(
}
}

private static void createMetricsMeters(
final Meter meter,
final CloseableCollectionType<IdDatabaseException> resources,
final HikariDataSource dataSource)
{
final var dataSourceBean =
dataSource.getHikariPoolMXBean();

resources.add(
meter.gaugeBuilder("idstore_db_connections_active")
.setDescription("Number of active database connections.")
.ofLongs()
.buildWithCallback(measurement -> {
measurement.record(
Integer.toUnsignedLong(dataSourceBean.getActiveConnections())
);
})
);

resources.add(
meter.gaugeBuilder("idstore_db_connections_idle")
.setDescription("Number of idle database connections.")
.ofLongs()
.buildWithCallback(measurement -> {
measurement.record(
Integer.toUnsignedLong(dataSourceBean.getIdleConnections())
);
})
);

resources.add(
meter.gaugeBuilder("idstore_db_connections_total")
.setDescription("Total number of database connections.")
.ofLongs()
.buildWithCallback(measurement -> {
measurement.record(
Integer.toUnsignedLong(dataSourceBean.getTotalConnections())
);
})
);

resources.add(
meter.gaugeBuilder("idstore_db_threads_waiting")
.setDescription("Number of threads waiting for connections.")
.ofLongs()
.buildWithCallback(measurement -> {
measurement.record(
Integer.toUnsignedLong(dataSourceBean.getThreadsAwaitingConnection())
);
})
);
}

private static void publishEvent(
final Consumer<String> startupMessages,
final String message)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,18 +87,24 @@ public IdDatabase(
this.settings =
new Settings().withRenderNameCase(RenderNameCase.LOWER);

final var dataSourceBean =
this.dataSource.getHikariPoolMXBean();

this.transactions =
meter.counterBuilder("idstore_db_transactions")
.setDescription("The number of completed transactions.")
.build();

this.transactionCommits =
meter.counterBuilder("idstore_db_commits")
.setDescription("The number of database transaction commits.")
.build();

this.transactionRollbacks =
meter.counterBuilder("idstore_db_rollbacks")
.setDescription("The number of database transaction rollbacks.")
.build();

this.resources.add(
meter.gaugeBuilder("idstore_db_connection_time")
.setDescription("The amount of time a database connection is held.")
Expand All @@ -107,6 +113,50 @@ public IdDatabase(
measurement.record(this.connectionTimeNow);
})
);

this.resources.add(
meter.gaugeBuilder("idstore_db_connections_active")
.setDescription("Number of active database connections.")
.ofLongs()
.buildWithCallback(measurement -> {
measurement.record(
Integer.toUnsignedLong(dataSourceBean.getActiveConnections())
);
})
);

this.resources.add(
meter.gaugeBuilder("idstore_db_connections_idle")
.setDescription("Number of idle database connections.")
.ofLongs()
.buildWithCallback(measurement -> {
measurement.record(
Integer.toUnsignedLong(dataSourceBean.getIdleConnections())
);
})
);

this.resources.add(
meter.gaugeBuilder("idstore_db_connections_total")
.setDescription("Total number of database connections.")
.ofLongs()
.buildWithCallback(measurement -> {
measurement.record(
Integer.toUnsignedLong(dataSourceBean.getTotalConnections())
);
})
);

this.resources.add(
meter.gaugeBuilder("idstore_db_threads_waiting")
.setDescription("Number of threads waiting for connections.")
.ofLongs()
.buildWithCallback(measurement -> {
measurement.record(
Integer.toUnsignedLong(dataSourceBean.getThreadsAwaitingConnection())
);
})
);
}

LongCounter counterTransactions()
Expand Down
5 changes: 0 additions & 5 deletions com.io7m.idstore.server.admin_v1/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,6 @@
<artifactId>com.io7m.idstore.server.service.clock</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>com.io7m.idstore.server.service.metrics</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>com.io7m.idstore.protocol.admin.cb</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import com.io7m.idstore.server.http.IdServletHolders;
import com.io7m.idstore.server.service.clock.IdServerClock;
import com.io7m.idstore.server.service.configuration.IdServerConfigurationService;
import com.io7m.idstore.server.service.metrics.IdMetricsServiceType;
import com.io7m.idstore.server.service.telemetry.api.IdMetricsServiceType;
import com.io7m.repetoir.core.RPServiceDirectoryType;
import org.eclipse.jetty.server.ForwardedRequestCustomizer;
import org.eclipse.jetty.server.HttpConfiguration.ConnectionFactory;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@
requires com.io7m.idstore.server.service.clock;
requires com.io7m.idstore.server.service.configuration;
requires com.io7m.idstore.server.service.health;
requires com.io7m.idstore.server.service.metrics;
requires com.io7m.idstore.server.service.reqlimit;
requires com.io7m.idstore.server.service.sessions;
requires com.io7m.idstore.server.service.telemetry.api;
Expand Down
5 changes: 0 additions & 5 deletions com.io7m.idstore.server.controller/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,6 @@
<artifactId>com.io7m.idstore.server.service.sessions</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>com.io7m.idstore.server.service.events</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>com.io7m.idstore.server.security</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@
import com.io7m.idstore.server.controller.IdServerStrings;
import com.io7m.idstore.server.controller.command_exec.IdCommandExecutionFailure;
import com.io7m.idstore.server.service.clock.IdServerClock;
import com.io7m.idstore.server.service.events.IdEventAdminLoggedIn;
import com.io7m.idstore.server.service.events.IdEventAdminLoginAuthenticationFailed;
import com.io7m.idstore.server.service.events.IdEventAdminLoginRateLimitExceeded;
import com.io7m.idstore.server.service.events.IdEventServiceType;
import com.io7m.idstore.server.service.telemetry.api.IdEventAdminLoggedIn;
import com.io7m.idstore.server.service.telemetry.api.IdEventAdminLoginAuthenticationFailed;
import com.io7m.idstore.server.service.telemetry.api.IdEventAdminLoginRateLimitExceeded;
import com.io7m.idstore.server.service.telemetry.api.IdEventServiceType;
import com.io7m.idstore.server.service.ratelimit.IdRateLimitAdminLoginServiceType;
import com.io7m.idstore.server.service.sessions.IdSessionAdminService;
import com.io7m.repetoir.core.RPServiceType;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@
import com.io7m.idstore.server.security.IdSecUserActionEmailAddBegin;
import com.io7m.idstore.server.service.branding.IdServerBrandingServiceType;
import com.io7m.idstore.server.service.configuration.IdServerConfigurationService;
import com.io7m.idstore.server.service.events.IdEventServiceType;
import com.io7m.idstore.server.service.events.IdEventUserEmailVerificationRateLimitExceeded;
import com.io7m.idstore.server.service.telemetry.api.IdEventServiceType;
import com.io7m.idstore.server.service.telemetry.api.IdEventUserEmailVerificationRateLimitExceeded;
import com.io7m.idstore.server.service.mail.IdServerMailServiceType;
import com.io7m.idstore.server.service.ratelimit.IdRateLimitEmailVerificationServiceType;
import com.io7m.idstore.server.service.templating.IdFMEmailVerificationData;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@
import com.io7m.idstore.server.security.IdSecUserActionEmailRemoveBegin;
import com.io7m.idstore.server.service.branding.IdServerBrandingServiceType;
import com.io7m.idstore.server.service.configuration.IdServerConfigurationService;
import com.io7m.idstore.server.service.events.IdEventServiceType;
import com.io7m.idstore.server.service.events.IdEventUserEmailVerificationRateLimitExceeded;
import com.io7m.idstore.server.service.telemetry.api.IdEventServiceType;
import com.io7m.idstore.server.service.telemetry.api.IdEventUserEmailVerificationRateLimitExceeded;
import com.io7m.idstore.server.service.mail.IdServerMailServiceType;
import com.io7m.idstore.server.service.ratelimit.IdRateLimitEmailVerificationServiceType;
import com.io7m.idstore.server.service.templating.IdFMEmailVerificationData;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@
import com.io7m.idstore.server.controller.command_exec.IdCommandExecutionFailure;
import com.io7m.idstore.server.service.clock.IdServerClock;
import com.io7m.idstore.server.service.configuration.IdServerConfigurationService;
import com.io7m.idstore.server.service.events.IdEventServiceType;
import com.io7m.idstore.server.service.events.IdEventUserLoggedIn;
import com.io7m.idstore.server.service.events.IdEventUserLoginAuthenticationFailed;
import com.io7m.idstore.server.service.events.IdEventUserLoginRateLimitExceeded;
import com.io7m.idstore.server.service.telemetry.api.IdEventServiceType;
import com.io7m.idstore.server.service.telemetry.api.IdEventUserLoggedIn;
import com.io7m.idstore.server.service.telemetry.api.IdEventUserLoginAuthenticationFailed;
import com.io7m.idstore.server.service.telemetry.api.IdEventUserLoginRateLimitExceeded;
import com.io7m.idstore.server.service.ratelimit.IdRateLimitUserLoginServiceType;
import com.io7m.idstore.server.service.sessions.IdSessionUserService;
import com.io7m.repetoir.core.RPServiceType;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@
import com.io7m.idstore.server.controller.command_exec.IdCommandExecutionFailure;
import com.io7m.idstore.server.service.branding.IdServerBrandingServiceType;
import com.io7m.idstore.server.service.clock.IdServerClock;
import com.io7m.idstore.server.service.events.IdEventServiceType;
import com.io7m.idstore.server.service.events.IdEventUserPasswordResetRateLimitExceeded;
import com.io7m.idstore.server.service.telemetry.api.IdEventServiceType;
import com.io7m.idstore.server.service.telemetry.api.IdEventUserPasswordResetRateLimitExceeded;
import com.io7m.idstore.server.service.mail.IdServerMailServiceType;
import com.io7m.idstore.server.service.ratelimit.IdRateLimitPasswordResetServiceType;
import com.io7m.idstore.server.service.telemetry.api.IdServerTelemetryServiceType;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
requires com.io7m.idstore.server.service.branding;
requires com.io7m.idstore.server.service.clock;
requires com.io7m.idstore.server.service.configuration;
requires com.io7m.idstore.server.service.events;
requires com.io7m.idstore.server.service.mail;
requires com.io7m.idstore.server.service.ratelimit;
requires com.io7m.idstore.server.service.sessions;
Expand Down
5 changes: 0 additions & 5 deletions com.io7m.idstore.server.http/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,6 @@
<artifactId>com.io7m.idstore.server.service.telemetry.api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>com.io7m.idstore.server.service.metrics</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>com.io7m.idstore.server.service.clock</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

import com.io7m.idstore.model.IdUserDomain;
import com.io7m.idstore.server.service.clock.IdServerClock;
import com.io7m.idstore.server.service.metrics.IdMetricsServiceType;
import com.io7m.idstore.server.service.telemetry.api.IdMetricsServiceType;
import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
package com.io7m.idstore.server.http;

import com.io7m.idstore.model.IdUserDomain;
import com.io7m.idstore.server.service.metrics.IdMetricsServiceType;
import com.io7m.idstore.server.service.telemetry.api.IdMetricsServiceType;
import com.io7m.idstore.server.service.telemetry.api.IdServerTelemetryServiceType;
import com.io7m.repetoir.core.RPServiceDirectoryType;
import io.opentelemetry.api.trace.SpanKind;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
requires static org.osgi.annotation.versioning;

requires com.io7m.idstore.server.service.telemetry.api;
requires com.io7m.idstore.server.service.metrics;
requires com.io7m.idstore.server.service.clock;

requires io.opentelemetry.api;
Expand Down
2 changes: 1 addition & 1 deletion com.io7m.idstore.server.service.configuration/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>com.io7m.idstore.server.service.metrics</artifactId>
<artifactId>com.io7m.idstore.server.service.telemetry.api</artifactId>
<version>${project.version}</version>
</dependency>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
package com.io7m.idstore.server.service.configuration;

import com.io7m.idstore.server.api.IdServerConfiguration;
import com.io7m.idstore.server.service.metrics.IdMetricsServiceType;
import com.io7m.idstore.server.service.telemetry.api.IdMetricsServiceType;
import com.io7m.repetoir.core.RPServiceType;

import java.util.Objects;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
requires static org.osgi.annotation.bundle;

requires transitive com.io7m.idstore.server.api;
requires com.io7m.idstore.server.service.metrics;
requires com.io7m.idstore.server.service.telemetry.api;

requires jakarta.xml.bind;
requires com.io7m.cxbutton.core;
Expand Down
63 changes: 0 additions & 63 deletions com.io7m.idstore.server.service.events/pom.xml

This file was deleted.

0 comments on commit b2be579

Please sign in to comment.