@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); }
@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)); }
@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 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)); }
@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()); }
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_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();
private void processDoubleValueMetric(String metricName, Double metricValue) { statsDClient.gauge(metricName, metricValue); }
private void processLongValueMetric(String metricName, Long metricValue) { statsDClient.gauge(metricName, metricValue); }
private void processDoubleValueMetric(String metricName, Double metricValue) { statsDClient.gauge(metricName, metricValue); }
private void processLongValueMetric(String metricName, Long metricValue) { statsDClient.gauge(metricName, metricValue); }
public void logStats(Stats stats) { client.count(keyPrefix + ".failed", stats.failed.get()); client.count(keyPrefix + ".succeeded", stats.succeeded.get()); client.count(keyPrefix + ".flushCount", stats.flushCount.get()); client.count(keyPrefix + ".messagesReceived", stats.messagesReceived.get()); for(Integer partitionId : stats.lastCommitOffsetByPartitionId.keySet()) { client.gauge( String.format("%s.partition_%s.offset", keyPrefix, partitionId), stats.lastCommitOffsetByPartitionId.get(partitionId)); } } }
/** * Report stats on the age of replication jobs based on thresholds in seconds. * If the jobs have a delay of 1, 5, 10 seconds, and the thresholds are {2, 6}, we would report * {2: 2, 6: 1} */ public synchronized void reportStats() { long now = System.currentTimeMillis(); Map<Long, Integer> mapCount = new HashMap<>(); for (Long value: thresholds) { mapCount.put(value, 0); } for (ReplicationJob job : idToReplicationJob.values()) { for (Long value: thresholds) { if ((now - job.getPersistedJobInfo().getCreateTime()) / 1000 > value) { mapCount.put(value, mapCount.get(value) + 1); } } } for (Map.Entry<Long, Integer> val: mapCount.entrySet()) { statsDClient.gauge(String.format(REPLICATION_JOBS_AGE_COUNT, val.getKey()), val.getValue()); } }
/** * Report stats on the age of replication jobs based on thresholds in seconds. * If the jobs have a delay of 1, 5, 10 seconds, and the thresholds are {2, 6}, we would report * {2: 2, 6: 1} */ public synchronized void reportStats() { long now = System.currentTimeMillis(); Map<Long, Integer> mapCount = new HashMap<>(); for (Long value: thresholds) { mapCount.put(value, 0); } for (ReplicationJob job : idToReplicationJob.values()) { for (Long value: thresholds) { if ((now - job.getPersistedJobInfo().getCreateTime()) / 1000 > value) { mapCount.put(value, mapCount.get(value) + 1); } } } for (Map.Entry<Long, Integer> val: mapCount.entrySet()) { statsDClient.gauge(String.format(REPLICATION_JOBS_AGE_COUNT, val.getKey()), val.getValue()); } }
/** * statsd has no notion of batch request, so gauges are pushed as they are received */ public void addGauge(DatadogGauge gauge) { if (gauge.getPoints().size() > 1) { LOG.debug("Gauge " + gauge.getMetric() + " has more than one data point, " + "will pick the first point only"); } double value = gauge.getPoints().get(0).get(1).doubleValue(); String[] tags = gauge.getTags().toArray(new String[0]); statsdClient.gauge(gauge.getMetric(), value, tags); }
protected void sendMetricPoint( String metricType, String metricName, double value, String[] tags) { if (System.currentTimeMillis() - this.initializationTime > 300 * 1000) { this.statsDClient.stop(); init(); } if (metricType.equals("histogram")) { statsDClient.histogram(metricName, value, tags); } else { statsDClient.gauge(metricName, value, tags); } }
/** * statsd has no notion of batch request, so gauges are pushed as they are received */ public void addGauge(DatadogGauge gauge) { if (gauge.getPoints().size() > 1) { LOG.debug("Gauge " + gauge.getMetric() + " has more than one data point, " + "will pick the first point only"); } double value = gauge.getPoints().get(0).get(1).doubleValue(); String[] tags = gauge.getTags().toArray(new String[gauge.getTags().size()]); statsdClient.gauge(gauge.getMetric(), value, tags); }
private void submitCountersToStatsd(Job job) throws IOException { Counters counters = job.getCounters(); if (getStatsdEnabled(job)) { StatsDClient statsd = new NonBlockingStatsDClient("Camus", getStatsdHost(job), getStatsdPort(job), new String[] { "camus:counters" }); for (CounterGroup counterGroup : counters) { for (Counter counter : counterGroup) { statsd.gauge(counterGroup.getDisplayName() + "." + counter.getDisplayName(), counter.getValue()); } } } }
private void submitCountersToStatsd(Job job) throws IOException { Counters counters = job.getCounters(); if (getStatsdEnabled(job)) { StatsDClient statsd = new NonBlockingStatsDClient("Camus", getStatsdHost(job), getStatsdPort(job), new String[] { "camus:counters" }); for (CounterGroup counterGroup : counters) { for (Counter counter : counterGroup) { statsd.gauge(counterGroup.getDisplayName() + "." + counter.getDisplayName(), counter.getValue()); } } } }