private String joinKeys(MetricId... parts) { final StringBuilder key = new StringBuilder(); for (final MetricId part : parts) { final String name = part.getKey(); if (name != null && !name.isEmpty()) { if (key.length() > 0) { key.append('.'); } key.append(name); } } return key.toString(); }
public SemanticAggregatorTimer( final MetricId id, final List<String> shardKey, final Remote remote, final TimeSource timeSource) { this.key = id.getKey(); this.remote = remote; this.timeSource = timeSource; allAttributes = SemanticAggregator.buildAttributes(id, "timer"); shard = Sharder.buildShardKey(shardKey, allAttributes); }
@Override public int compareTo(MetricId o) { if (o == null) { return -1; } // fast path, same object, or same content. if (this == o) { return 0; } // fast path, different hashes. final int h = Integer.compare(hash, o.hash); if (h != 0) { return h; } final int k = compareKey(key, o.getKey()); if (k != 0) { return k; } return compareTags(tags.entrySet(), o.tags.entrySet()); }
/** * Join the specified set of metric names. * * @param parts Multiple metric names to join using the separator. * @return A newly created metric name which has the name of the specified parts and includes * all tags of all child metric names. **/ public static MetricId join(MetricId... parts) { final StringBuilder nameBuilder = new StringBuilder(); final Map<String, String> tags = new HashMap<String, String>(); boolean first = true; for (MetricId part : parts) { final String name = part.getKey(); if (name != null && !name.isEmpty()) { if (first) { first = false; } else { nameBuilder.append(SEPARATOR); } nameBuilder.append(name); } if (!part.getTags().isEmpty()) { tags.putAll(part.getTags()); } } return new MetricId(nameBuilder.toString(), tags); }
private void reportGauge( MetricId key, @SuppressWarnings("rawtypes") Gauge value ) { if (value == null) { return; } key = MetricId.join(prefix, key); final Metric m = FastForward .metric(key.getKey()) .attributes(key.getTags()) .attribute(METRIC_TYPE, "gauge"); send(m.value(convert(value.getValue()))); }
private void reportDerivingMeter(MetricId key, DerivingMeter value) { key = MetricId.join(prefix, key); final Metric m = FastForward .metric(key.getKey()) .attributes(key.getTags()) .attribute(METRIC_TYPE, "deriving-meter"); reportMetered(m, value); }
private void reportMetered(MetricId key, Meter value) { key = MetricId.join(prefix, key); final Metric m = FastForward .metric(key.getKey()) .attributes(key.getTags()) .attribute(METRIC_TYPE, "meter"); reportMetered(m, value); reportCounter(key, value); }
private void reportHistogram(MetricId key, Histogram value) { key = MetricId.join(prefix, key); final Metric m = FastForward .metric(key.getKey()) .attributes(key.getTags()) .attribute(METRIC_TYPE, "histogram"); reportHistogram(m, value.getSnapshot()); }
private void reportCounter(MetricId key, Counting value) { key = MetricId.join(prefix, key); final Metric m = FastForward .metric(key.getKey()) .attributes(key.getTags()) .attribute(METRIC_TYPE, "counter"); send(m.value(value.getCount())); }
private void reportTimer(MetricId key, Timer value) { key = MetricId.join(prefix, key); final Metric m = FastForward .metric(key.getKey()) .attributes(key.getTags()) .attribute(METRIC_TYPE, "timer") .attribute("unit", "ns"); reportMetered(m, value); reportHistogram(m, value.getSnapshot()); }