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()); } } } }
/** * Record a gauge value in StatsD * * @param key The key for the gauge * @param value The value of the gauge */ @Override public void recordGaugeValue(String key, long value) { client.recordGaugeValue(key, value); }
/** * @see #recordGaugeValue(String, long) */ @Override public void recordGaugeValue(String key, double value) { client.recordGaugeValue(key, value); }
@Override public void recordGaugeValue(String parameterName, Long value) { statsd.recordGaugeValue(parameterName, value); }
@Override public void recordGaugeValue(String parameterName, Double value) { statsd.recordGaugeValue(parameterName, value); }
@Override public void send(final String key, final List<String> tags, final double value) { if(configuration.isDatadogSendingEnabled()) { statsd.recordGaugeValue(key, value, tags.toArray(new String[tags.size()])); } else { log.debug("Skip sending to datadog cause it is disabled"); } }
@Override public void send(final String key, final List<String> tags, final long value) { if(configuration.isDatadogSendingEnabled()) { statsd.recordGaugeValue(key, value, tags.toArray(new String[tags.size()])); } else { log.debug("Skip sending to datadog cause it is disabled"); } }
/** * Record multiple gauge values in StatsD * This simply loops over calling recordGaugeValue * * @param gauges A map of gauge names to values */ @Override public void recordGaugeValues(Map<String, ? extends Number> gauges) { for (Map.Entry<String, ? extends Number> gauge : gauges.entrySet()) { if (gauge.getValue() instanceof Long) { client.recordGaugeValue(gauge.getKey(), gauge.getValue().longValue()); } else if (gauge.getValue() instanceof Double) { client.recordGaugeValue(gauge.getKey(), gauge.getValue().doubleValue()); } else { throw new IllegalArgumentException("Unexpected Number type: " + gauge.getValue().getClass().getSimpleName()); } } }
@Override public void send(final String key, final List<String> tags, final int value) { if(configuration.isDatadogSendingEnabled()) { statsd.recordGaugeValue(key, value, tags.toArray(new String[tags.size()])); } else { log.debug("Skip sending to datadog cause it is disabled"); } }
@Override public void report(Measurement measurement) { if (client == null) { logger.warn("Datadog client is not initialized. Skipping measurement {} with value {}.", measurement.name(), measurement.getOrDefault(null)); return; } try { if (measurement.isSimple()) { client.recordGaugeValue(measurement.name(), measurement.getValue(), convertTagsMap(measurement.tags())); logger.debug("Reporting measurement {}, value {} and tags {}", measurement.name(), measurement.getValue(), convertTagsMap(measurement.tags())); } else { for (String key : measurement.fields().keySet()) { if (!isNumeric(measurement.fields().get(key))) { continue; } client.recordGaugeValue(measurement.name() + "." + key, Double.parseDouble(measurement.fields().get(key)), convertTagsMap(measurement.tags())); } } } catch (Exception e) { logger.warn("Sending measurement failed: execTime={}, exception: {}", measurement.time(), e.getMessage()); } }