public CodahaleMetricsCollector registerAll(String prefix, MetricSet metricSet) { for (Map.Entry<String, Metric> entry : metricSet.getMetrics().entrySet()) { if (entry.getValue() instanceof MetricSet) { registerAll(prefix + "." + entry.getKey(), (MetricSet) entry.getValue()); } else { registerNamedMetric(prefix + "." + entry.getKey(), entry.getValue()); } } return this; }
/** * Adds metrics related to the given ServerConfig - usually gauges so you can inspect how the ServerConfig was setup. * Usually not needed - better to log this info on startup. */ protected void addServerConfigMetrics(ServerConfig config) { // add server config gauges metricsCollector.registerNamedMetric(serverConfigMetricNamingStrategy.nameFor(BOSS_THREADS), (Gauge<Integer>)config::numBossThreads); metricsCollector.registerNamedMetric(serverConfigMetricNamingStrategy.nameFor(WORKER_THREADS), (Gauge<Integer>)config::numWorkerThreads); metricsCollector.registerNamedMetric(serverConfigMetricNamingStrategy.nameFor(MAX_REQUEST_SIZE_IN_BYTES), (Gauge<Integer>)config::maxRequestSizeInBytes); List<String> endpointsList = config.appEndpoints() .stream() .map( endpoint -> endpoint.getClass().getName() + "-" + getMatchingHttpMethodsAsCombinedString(endpoint) + "-" + endpoint.requestMatcher().matchingPathTemplates() ) .collect(Collectors.toList()); metricsCollector.registerNamedMetric(serverConfigMetricNamingStrategy.nameFor(ENDPOINTS), (Gauge<List<String>>)() -> endpointsList); }
protected void addServerStatisticsMetrics() { this.inflightRequests = metricsCollector.getNamedCounter( serverStatsMetricNamingStrategy.nameFor(INFLIGHT_REQUESTS) ); this.processedRequests = metricsCollector.getNamedCounter( serverStatsMetricNamingStrategy.nameFor(PROCESSED_REQUESTS) ); this.failedRequests = metricsCollector.getNamedCounter( serverStatsMetricNamingStrategy.nameFor(FAILED_REQUESTS) ); this.responseWriteFailed = metricsCollector.getNamedCounter( serverStatsMetricNamingStrategy.nameFor(RESPONSE_WRITE_FAILED) ); this.responseSizes = metricsCollector.registerNamedMetric( serverStatsMetricNamingStrategy.nameFor(RESPONSE_SIZES), requestAndResponseSizeHistogramSupplier.get() ); this.requestSizes = metricsCollector.registerNamedMetric( serverStatsMetricNamingStrategy.nameFor(REQUEST_SIZES), requestAndResponseSizeHistogramSupplier.get() ); }
private void verifyServerStatisticMetrics(CodahaleMetricsListener instance) { String prefix = ((DefaultMetricNamingStrategy)instance.serverStatsMetricNamingStrategy).prefix; assertThat(instance.getInflightRequests()).isSameAs(instance.inflightRequests); verify(cmcMock).getNamedCounter(name(prefix, "inflight_requests")); verify(metricRegistryMock).counter(name(prefix, "inflight_requests")); assertThat(instance.inflightRequests).isSameAs(registeredCounterMocks.get(name(prefix, "inflight_requests"))); assertThat(instance.getProcessedRequests()).isSameAs(instance.processedRequests); verify(cmcMock).getNamedCounter(name(prefix, "processed_requests")); verify(metricRegistryMock).counter(name(prefix, "processed_requests")); assertThat(instance.processedRequests).isSameAs(registeredCounterMocks.get(name(prefix, "processed_requests"))); assertThat(instance.getFailedRequests()).isSameAs(instance.failedRequests); verify(cmcMock).getNamedCounter(name(prefix, "failed_requests")); verify(metricRegistryMock).counter(name(prefix, "failed_requests")); assertThat(instance.failedRequests).isSameAs(registeredCounterMocks.get(name(prefix, "failed_requests"))); assertThat(instance.getResponseWriteFailed()).isSameAs(instance.responseWriteFailed); verify(cmcMock).getNamedCounter(name(prefix, "response_write_failed")); verify(metricRegistryMock).counter(name(prefix, "response_write_failed")); assertThat(instance.responseWriteFailed).isSameAs(registeredCounterMocks.get(name(prefix, "response_write_failed"))); assertThat(instance.getResponseSizes()).isSameAs(instance.responseSizes); verify(metricRegistryMock).register(name(prefix, "response_sizes"), instance.responseSizes); assertThat(instance.responseSizes).isSameAs(registeredHistogramMocks.get(name(prefix, "response_sizes"))); verify(cmcMock).registerNamedMetric(name(prefix, "response_sizes"), instance.responseSizes); assertThat(instance.getRequestSizes()).isSameAs(instance.requestSizes); verify(metricRegistryMock).register(name(prefix, "request_sizes"), instance.requestSizes); assertThat(instance.requestSizes).isSameAs(registeredHistogramMocks.get(name(prefix, "request_sizes"))); verify(cmcMock).registerNamedMetric(name(prefix, "request_sizes"), instance.requestSizes); }
metricRegistryMock.register(name, metric); return metric; }).when(cmcMock).registerNamedMetric(anyString(), any(Metric.class));
assertThat(registeredGauges.get(expectedBossThreadsGaugeName).getValue()) .isEqualTo(serverConfig.numBossThreads()); verify(cmcMock).registerNamedMetric(expectedBossThreadsGaugeName, registeredGauges.get(expectedBossThreadsGaugeName)); assertThat(registeredGauges.get(expectedWorkerThreadsGaugeName).getValue()) .isEqualTo(serverConfig.numWorkerThreads()); verify(cmcMock).registerNamedMetric(expectedWorkerThreadsGaugeName, registeredGauges.get(expectedWorkerThreadsGaugeName)); assertThat(registeredGauges.get(expectedMaxRequestSizeInBytesGaugeName).getValue()) .isEqualTo(serverConfig.maxRequestSizeInBytes()); verify(cmcMock).registerNamedMetric(expectedMaxRequestSizeInBytesGaugeName, registeredGauges.get(expectedMaxRequestSizeInBytesGaugeName)); assertThat(registeredGauges.get(expectedEndpointsListGaugeName).getValue()) .isEqualTo(expectedEndpointsListValue); verify(cmcMock).registerNamedMetric(expectedEndpointsListGaugeName, registeredGauges.get(expectedEndpointsListGaugeName));