@Override public void close() { statsd.stop(); }
private void reportMetrics() { for (String metricName: _metricNames) { String mbeanExpr = metricName.substring(0, metricName.lastIndexOf(":")); String attributeExpr = metricName.substring(metricName.lastIndexOf(":") + 1); List<MbeanAttributeValue> attributeValues = getMBeanAttributeValues(mbeanExpr, attributeExpr); for (MbeanAttributeValue attributeValue: attributeValues) { final String statsdMetricName = generateStatsdMetricName(attributeValue.mbean(), attributeValue.attribute()); _statsdClient.recordGaugeValue(statsdMetricName, new Double(attributeValue.value()).longValue()); } } } }
@Test public void auditService_metrics_emitted() throws Exception { Mockito.when(metricsUtils.pullUpMap("cloudfoundry.identity", "*", server)).thenReturn((Map)mBeanMap2); uaaMetricsEmitter.emitMetrics(); Mockito.verify(statsDClient).gauge("audit_service.user_authentication_count", 3); Mockito.verify(statsDClient).gauge("audit_service.user_not_found_count", 1); Mockito.verify(statsDClient).gauge("audit_service.principal_authentication_failure_count", 4); Mockito.verify(statsDClient).gauge("audit_service.principal_not_found_count", 5); Mockito.verify(statsDClient).gauge("audit_service.user_authentication_failure_count", 6); Mockito.verify(statsDClient).gauge("audit_service.client_authentication_count", 7); Mockito.verify(statsDClient).gauge("audit_service.client_authentication_failure_count", 42); }
public StatsdMetricsReporterService(Map<String, Object> props, String name) { StatsdMetricsReporterServiceConfig config = new StatsdMetricsReporterServiceConfig(props); _name = name; _metricNames = config.getList(StatsdMetricsReporterServiceConfig.REPORT_METRICS_CONFIG); _reportIntervalSec = config.getInt(StatsdMetricsReporterServiceConfig.REPORT_INTERVAL_SEC_CONFIG); _executor = Executors.newSingleThreadScheduledExecutor(); _statsdClient = new NonBlockingStatsDClient(config.getString(StatsdMetricsReporterServiceConfig.REPORT_STATSD_PREFIX), config.getString(StatsdMetricsReporterServiceConfig.REPORT_STATSD_HOST), config.getInt(StatsdMetricsReporterServiceConfig.REPORT_STATSD_PORT)); }
switch (statsDMetric.type) { case count: statsd.count(fullName, value.doubleValue(), tags); break; case timer: statsd.time(fullName, value.longValue(), tags); break; case gauge: statsd.gauge(fullName, value.doubleValue(), tags); break; statsd.count(fullName, val, tags); break; case timer: statsd.time(fullName, val, tags); break; case gauge: statsd.gauge(fullName, val, tags); break;
Mockito.when(metricsUtils.getUaaMetrics(any())).thenReturn(uaaMetrics1, uaaMetrics2); uaaMetricsEmitter.emitGlobalRequestMetrics(); Mockito.verify(statsDClient).count("requests.global.completed.count", 3087l); Mockito.verify(statsDClient).gauge("requests.global.completed.time", 29l); Mockito.verify(statsDClient).count("requests.global.unhealthy.count", 1l); Mockito.verify(statsDClient).gauge("requests.global.unhealthy.time", 4318l); Mockito.verify(statsDClient).count("requests.global.status_1xx.count", 0l); Mockito.verify(statsDClient).count("requests.global.status_2xx.count", 2148l); Mockito.verify(statsDClient).count("requests.global.status_3xx.count", 763l); Mockito.verify(statsDClient).count("requests.global.status_4xx.count", 175l); Mockito.verify(statsDClient).count("requests.global.status_5xx.count", 1l); Mockito.verify(statsDClient).gauge("server.inflight.count", 3l); Mockito.verify(statsDClient).gauge("server.up.time", 12349843l); Mockito.verify(statsDClient).gauge("server.idle.time", 12349l); Mockito.verify(statsDClient).count("database.global.completed.count", 83797l); Mockito.verify(statsDClient).gauge("database.global.completed.time", 0l); Mockito.verify(statsDClient).count("database.global.unhealthy.count", 17549l); Mockito.verify(statsDClient).gauge("database.global.unhealthy.time", 0l); reset(statsDClient); uaaMetricsEmitter.emitGlobalRequestMetrics(); Mockito.verify(statsDClient).count("requests.global.completed.count", 4l); Mockito.verify(statsDClient).count("requests.global.unhealthy.count", 1l); Mockito.verify(statsDClient).count("requests.global.status_1xx.count", 0l); Mockito.verify(statsDClient).count("requests.global.status_2xx.count", 1l); Mockito.verify(statsDClient).count("requests.global.status_3xx.count", 1l); Mockito.verify(statsDClient).count("requests.global.status_4xx.count", 1l); Mockito.verify(statsDClient).count("requests.global.status_5xx.count", 1l); Mockito.verify(statsDClient).count("database.global.completed.count", 2l); Mockito.verify(statsDClient).count("database.global.unhealthy.count", 5l);
private static Callable<SocketAddress> staticStatsDAddressResolution(final String hostname, final int port) throws StatsDClientException { try { return staticAddressResolution(hostname, port); } catch (final Exception e) { throw new StatsDClientException("Failed to lookup StatsD host", e); } } }
@Test public void testNotifications() { uaaMetricsEmitter.enableNotification(); emitter.sendNotification(new Notification("/api", 45L, 0)); Mockito.verify(statsDClient).time("requests.api.latency", 45L); }
tagArray[i++] = e.getKey() + ':' + e.getValue(); mStatsDClient.recordGaugeValue(metricName, value, tagArray); } else { StringBuilder builder = new StringBuilder(); .append(tags.get(Stat.STAT_KEYS.PARTITION.getName())) .toString(); mStatsDClient.recordGaugeValue(metricName, value);
/** * Convenience method equivalent to {@link #recordGaugeValue(String, long)}. */ @Override public final void gauge(String aspect, long value) { recordGaugeValue(aspect, value); }
static StatsDEmitter of(StatsDEmitterConfig config, ObjectMapper mapper) { NonBlockingStatsDClient client = new NonBlockingStatsDClient( config.getPrefix(), config.getHostname(), config.getPort(), config.isDogstatsd() ? config.getDogstatsdConstantTags().toArray(new String[0]) : EMPTY_ARRAY, new StatsDClientErrorHandler() { private int exceptionCount = 0; @Override public void handle(Exception exception) { if (exceptionCount % 1000 == 0) { log.error(exception, "Error sending metric to StatsD."); } exceptionCount += 1; } } ); return new StatsDEmitter(config, mapper, client); }
@Test public void vm_vitals() { uaaMetricsEmitter.emitVmVitals(); Mockito.verify(statsDClient).gauge(eq("vitals.vm.cpu.count"), gt(0l)); Mockito.verify(statsDClient).gauge(eq("vitals.vm.cpu.load"), geq(0l)); Mockito.verify(statsDClient).gauge(eq("vitals.vm.memory.total"), geq(134217728l)); Mockito.verify(statsDClient).gauge(eq("vitals.vm.memory.committed"), geq(1l)); Mockito.verify(statsDClient).gauge(eq("vitals.vm.memory.free"), geq(1l)); }
public void close() { if (statsdClient!=null) { statsdClient.stop(); } }
private static Callable<SocketAddress> staticStatsDAddressResolution(final String hostname, final int port) throws StatsDClientException { try { return staticAddressResolution(hostname, port); } catch (final Exception e) { throw new StatsDClientException("Failed to lookup StatsD host", e); } } }
public ProgressMonitor(SecorConfig config) throws Exception { mConfig = config; mZookeeperConnector = new ZookeeperConnector(mConfig); try { Class timestampClass = Class.forName(mConfig.getKafkaClientClass()); this.mKafkaClient = (KafkaClient) timestampClass.newInstance(); this.mKafkaClient.init(config); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) { throw new RuntimeException(e); } mMessageParser = (MessageParser) ReflectionUtil.createMessageParser( mConfig.getMessageParserClass(), mConfig); mPrefix = mConfig.getMonitoringPrefix(); if (Strings.isNullOrEmpty(mPrefix)) { mPrefix = "secor"; } if (mConfig.getStatsDHostPort() != null && !mConfig.getStatsDHostPort().isEmpty()) { HostAndPort hostPort = HostAndPort.fromString(mConfig.getStatsDHostPort()); mStatsDClient = new NonBlockingStatsDClient(null, hostPort.getHostText(), hostPort.getPort(), mConfig.getStatsDDogstatsdConstantTags()); } }
@Test public void jvm_vitals() { uaaMetricsEmitter.emitJvmVitals(); Mockito.verify(statsDClient).gauge(eq("vitals.jvm.cpu.load"), and(geq(0l), leq(100l))); Mockito.verify(statsDClient).gauge(eq("vitals.jvm.thread.count"), and(gt(1l), leq(1000l))); Mockito.verify(statsDClient).gauge(eq("vitals.jvm.heap.init"), gt(0l)); Mockito.verify(statsDClient).gauge(eq("vitals.jvm.heap.committed"), gt(0l)); Mockito.verify(statsDClient).gauge(eq("vitals.jvm.heap.used"), gt(0l)); //Mockito.verify(statsDClient).gauge(eq("vitals.jvm.heap.max"), gt(0l)); Mockito.verify(statsDClient).gauge(eq("vitals.jvm.non-heap.init"), gt(0l)); Mockito.verify(statsDClient).gauge(eq("vitals.jvm.non-heap.committed"), gt(0l)); Mockito.verify(statsDClient).gauge(eq("vitals.jvm.non-heap.used"), gt(0l)); //Mockito.verify(statsDClient).gauge(eq("vitals.jvm.non-heap.max"), gt(0l)); }
/** * Construct a StatsD client * * @param server The hostname of the StatsD server * @param port The port on which StatsD is running * @param prefix The prefix for all metrics sent * @return A StatsD client */ @Override protected StatsDClient createClient(String server, int port, String prefix) { return new NonBlockingStatsDClient(prefix, server, port); }
@Test public void perUrlGroup_request_metrics() throws Exception { Mockito.when(metricsUtils.getUaaMetrics(any())).thenReturn(uaaMetrics1); uaaMetricsEmitter.emitUrlGroupRequestMetrics(); Mockito.verify(statsDClient).gauge(eq("requests.ui.completed.count"), gt(0l)); Mockito.verify(statsDClient).gauge(eq("requests.ui.completed.time"), geq(300l)); Mockito.verify(statsDClient).gauge(eq("requests.static-content.completed.count"), gt(0l)); Mockito.verify(statsDClient).gauge(eq("requests.static-content.completed.time"), geq(23l)); }
@Test public void auditService_metricValues_areNull() throws Exception { mBeanMap1.put("user_authentication_count", null); Mockito.when(metricsUtils.pullUpMap("cloudfoundry.identity", "*", server)).thenReturn((Map)mBeanMap2); uaaMetricsEmitter.emitMetrics(); Mockito.verify(statsDClient).gauge("audit_service.user_not_found_count", 1); Mockito.verify(statsDClient, times(6)).gauge(anyString(), anyLong()); }
@Test public void auditService_Key_isNull () throws Exception { mBeanMap2.put("UaaAudit", null); Mockito.when(metricsUtils.pullUpMap("cloudfoundry.identity", "*", server)).thenReturn((Map)mBeanMap2); uaaMetricsEmitter.emitMetrics(); Mockito.verify(statsDClient, times(0)).gauge(anyString(), anyLong()); }