Skip to content

Commit b5e619a

Browse files
committed
Add basic metrics
1 parent 82e0f7d commit b5e619a

4 files changed

Lines changed: 35 additions & 5 deletions

File tree

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ plugins {
55
}
66

77
group = 'org.amoseman'
8-
version = '3.3.1'
8+
version = '3.3.2'
99

1010
repositories {
1111
mavenCentral()

src/main/java/org/amoseman/cmdb/application/ConfigurationManagementDatabase.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package org.amoseman.cmdb.application;
22

3+
import com.codahale.metrics.ConsoleReporter;
4+
import com.codahale.metrics.Meter;
5+
import com.codahale.metrics.MetricRegistry;
36
import io.dropwizard.auth.AuthDynamicFeature;
47
import io.dropwizard.auth.AuthValueFactoryProvider;
58
import io.dropwizard.auth.basic.BasicCredentialAuthFilter;
@@ -23,6 +26,8 @@
2326
import org.amoseman.cmdb.databaseclient.databaseclients.MongoDatabaseClient;
2427
import org.amoseman.cmdb.databaseclient.databaseclients.RedisDatabaseClient;
2528

29+
import java.util.concurrent.TimeUnit;
30+
2631
/**
2732
* The configuration management database (CMDB) application.
2833
*/
@@ -60,11 +65,17 @@ public void run(ApplicationConfiguration configuration, Environment environment)
6065
default -> throw new RuntimeException("Invalid database type");
6166
};
6267

68+
MetricRegistry metrics = new MetricRegistry();
69+
ConsoleReporter reporter = ConsoleReporter.forRegistry(metrics)
70+
.convertRatesTo(TimeUnit.SECONDS)
71+
.convertDurationsTo(TimeUnit.MILLISECONDS)
72+
.build();
73+
reporter.start(60, TimeUnit.SECONDS);
6374

64-
ConfigurationResource configurationResource = new ConfigurationResource(configurationDAO, configuration.getDefaultValue());
75+
ConfigurationResource configurationResource = new ConfigurationResource(configurationDAO, configuration.getDefaultValue(), metrics);
6576
environment.jersey().register(configurationResource);
6677

67-
AccountResource accountResource = new AccountResource(accountDAO);
78+
AccountResource accountResource = new AccountResource(accountDAO, metrics);
6879
environment.jersey().register(accountResource);
6980

7081
// security

src/main/java/org/amoseman/cmdb/application/resources/AccountResource.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package org.amoseman.cmdb.application.resources;
22

33

4+
import com.codahale.metrics.Meter;
5+
import com.codahale.metrics.MetricRegistry;
46
import com.codahale.metrics.annotation.Timed;
57
import io.dropwizard.auth.Auth;
68
import jakarta.ws.rs.*;
@@ -15,9 +17,14 @@
1517
@Produces(MediaType.APPLICATION_JSON)
1618
public class AccountResource {
1719
private final AccountDAO accountDAO;
20+
private final Meter addAccountMeter;
21+
private final Meter removeAccountMeter;
1822

19-
public AccountResource(AccountDAO accountDAO) {
23+
public AccountResource(AccountDAO accountDAO, MetricRegistry metrics) {
2024
this.accountDAO = accountDAO;
25+
this.addAccountMeter = metrics.meter("add-account");
26+
this.removeAccountMeter = metrics.meter("remove-account");
27+
2128
}
2229

2330
/**
@@ -28,6 +35,7 @@ public AccountResource(AccountDAO accountDAO) {
2835
@POST
2936
@Timed
3037
public boolean addAccount(@QueryParam("account") String account, @QueryParam("password") String password) {
38+
addAccountMeter.mark();
3139
return accountDAO.addAccount(account, password);
3240
}
3341

@@ -38,6 +46,7 @@ public boolean addAccount(@QueryParam("account") String account, @QueryParam("pa
3846
@DELETE
3947
@Timed
4048
public boolean removeAccount(@Auth User user) {
49+
removeAccountMeter.mark();
4150
return accountDAO.deleteAccount(user.getName());
4251
}
4352
}

src/main/java/org/amoseman/cmdb/application/resources/ConfigurationResource.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.amoseman.cmdb.application.resources;
22

3+
import com.codahale.metrics.Meter;
4+
import com.codahale.metrics.MetricRegistry;
35
import com.codahale.metrics.annotation.Timed;
46
import io.dropwizard.auth.Auth;
57
import jakarta.annotation.security.PermitAll;
@@ -18,15 +20,23 @@
1820
public class ConfigurationResource {
1921
private final ConfigurationDAO configurationDAO;
2022
private final ConfigurationValue defaultValue;
23+
private final Meter readConfigurationMeter;
24+
private final Meter createConfigurationMeter;
25+
private final Meter updateConfigurationMeter;
26+
private final Meter deleteConfigurationMeter;
2127

2228
/**
2329
* Instantiate a ConfigurationResource.
2430
* @param configurationDAO ConfigurationDatabaseAccess The database access object for configurations.
2531
* @param defaultValue String The default return value for configuration values.
2632
*/
27-
public ConfigurationResource(ConfigurationDAO configurationDAO, String defaultValue) {
33+
public ConfigurationResource(ConfigurationDAO configurationDAO, String defaultValue, MetricRegistry metrics) {
2834
this.configurationDAO = configurationDAO;
2935
this.defaultValue = new ConfigurationValue(defaultValue, defaultValue, defaultValue);
36+
this.readConfigurationMeter = metrics.meter("read-configuration");
37+
this.createConfigurationMeter = metrics.meter("create-configuration");
38+
this.updateConfigurationMeter = metrics.meter("update-configuration");
39+
this.deleteConfigurationMeter = metrics.meter("delete-configuration");
3040
}
3141

3242
/**

0 commit comments

Comments
 (0)