Skip to content

Commit

Permalink
fix: use env var instead of system property, fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
pb82 committed Sep 5, 2021
1 parent 3d3eaee commit f921037
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,22 +23,25 @@ public final class MetricsFilter implements ContainerRequestFilter, ContainerRes
private static final String METRICS_REQUEST_TIMESTAMP = "metrics.requestTimestamp";
private static final MetricsFilter INSTANCE = new MetricsFilter();

private static final boolean URI_METRICS_ENABLED = Boolean.getBoolean("URI_METRICS_ENABLED");
private static final boolean URI_METRICS_ENABLED = Boolean.parseBoolean(System.getenv("URI_METRICS_ENABLED"));

// relevant response content types to be measured
private static final Set<MediaType> contentTypes = new HashSet<>();

static {
contentTypes.add(MediaType.APPLICATION_JSON_TYPE);
contentTypes.add(MediaType.APPLICATION_XML_TYPE);
contentTypes.add(MediaType.TEXT_HTML_TYPE);
}

private static final Set<MediaType> CONTENT_TYPES = Collections.unmodifiableSet(contentTypes);

public static MetricsFilter instance() {
return INSTANCE;
}

private MetricsFilter() { }
private MetricsFilter() {
}

@Override
public void filter(ContainerRequestContext req) {
Expand All @@ -52,7 +55,7 @@ public void filter(ContainerRequestContext req, ContainerResponseContext res) {
String resource = ResourceExtractor.getResource(req.getUriInfo());
String uri = ResourceExtractor.getURI(req.getUriInfo());

if(URI_METRICS_ENABLED){
if (URI_METRICS_ENABLED) {
PrometheusExporter.instance().recordResponseTotal(status, req.getMethod(), resource, uri);
if (status >= 400) {
PrometheusExporter.instance().recordResponseError(status, req.getMethod(), resource, uri);
Expand All @@ -70,7 +73,7 @@ public void filter(ContainerRequestContext req, ContainerResponseContext res) {
long time = (long) req.getProperty(METRICS_REQUEST_TIMESTAMP);
long dur = System.currentTimeMillis() - time;
LOG.trace("Duration is calculated as " + dur + " ms.");
if(URI_METRICS_ENABLED){
if (URI_METRICS_ENABLED) {
PrometheusExporter.instance().recordRequestDuration(status, dur, req.getMethod(), resource, uri);
} else {
PrometheusExporter.instance().recordRequestDuration(status, dur, req.getMethod(), resource);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,8 @@ public final class PrometheusExporter {

private final static String PROMETHEUS_PUSHGATEWAY_GROUPINGKEY_INSTANCE = "PROMETHEUS_GROUPING_KEY_INSTANCE";
private final static Pattern PROMETHEUS_PUSHGATEWAY_GROUPINGKEY_INSTANCE_ENVVALUE_PATTERN = Pattern.compile("ENVVALUE:(.+?)");

private final static String PROMETHEUS_PUSHGATEWAY_JOB = "PROMETHEUS_PUSHGATEWAY_JOB";

private static final boolean URI_METRICS_ENABLED = Boolean.getBoolean("URI_METRICS_ENABLED");
private final static String PROMETHEUS_PUSHGATEWAY_JOB = "PROMETHEUS_PUSHGATEWAY_JOB";

private static PrometheusExporter INSTANCE;

Expand Down Expand Up @@ -151,6 +149,7 @@ private PrometheusExporter() {
.labelNames("realm", "provider", "error", "client_id")
.register();

final boolean URI_METRICS_ENABLED = Boolean.parseBoolean(System.getenv("URI_METRICS_ENABLED"));
if (URI_METRICS_ENABLED){
responseTotal = Counter.build()
.name("keycloak_response_total")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,7 @@ public void shouldCorrectlyRecordGenericAdminEvents() throws IOException {

@Test
public void shouldCorrectlyRecordResponseDurations() throws IOException {
environmentVariables.set("URI_METRICS_ENABLED", "true");
PrometheusExporter.instance().recordRequestDuration(200, 5, "GET", "admin,admin/serverinfo", "auth/realm");
assertGenericMetric("keycloak_request_duration_count", 1,
tuple("code","200"), tuple("method", "GET"), tuple("resource", "admin,admin/serverinfo"), tuple("uri", "auth/realm"));
Expand All @@ -274,6 +275,7 @@ public void shouldCorrectlyRecordResponseDurations() throws IOException {

@Test
public void shouldCorrectlyRecordResponseTotal() throws IOException {
environmentVariables.set("URI_METRICS_ENABLED", "true");
PrometheusExporter.instance().recordResponseTotal(200, "GET", "admin,admin/serverinfo", "auth/realm");
PrometheusExporter.instance().recordResponseTotal(500, "POST", "admin,admin/serverinfo", "auth/realm");
assertGenericMetric("keycloak_response_total", 1,
Expand All @@ -284,6 +286,7 @@ public void shouldCorrectlyRecordResponseTotal() throws IOException {

@Test
public void shouldCorrectlyRecordResponseErrors() throws IOException {
environmentVariables.set("URI_METRICS_ENABLED", "true");
PrometheusExporter.instance().recordResponseError(500, "POST", "admin,admin/serverinfo", "auth/realm");
assertGenericMetric("keycloak_response_errors", 1,
tuple("code", "500"), tuple("method", "POST"), tuple("resource", "admin,admin/serverinfo"), tuple("uri", "auth/realm"));
Expand Down

0 comments on commit f921037

Please sign in to comment.