.append(Collector.doubleToGoString(sample.value)) .append('\n');
@Override public Collector.MetricFamilySamples.Sample createSample(final String dropwizardName, final String nameSuffix, final List<String> additionalLabelNames, final List<String> additionalLabelValues, final double value) { final String suffix = nameSuffix == null ? "" : nameSuffix; final List<String> labelNames = additionalLabelNames == null ? Collections.<String>emptyList() : additionalLabelNames; final List<String> labelValues = additionalLabelValues == null ? Collections.<String>emptyList() : additionalLabelValues; return new Collector.MetricFamilySamples.Sample( Collector.sanitizeMetricName(dropwizardName + suffix), new ArrayList<String>(labelNames), new ArrayList<String>(labelValues), value ); } }
private void findNextElement() { next = null; while (metricFamilySamples != null && metricFamilySamples.hasNext()) { next = filter(metricFamilySamples.next()); if (next != null) { return; } } if (next == null) { while (collectorIter.hasNext()) { metricFamilySamples = collectorIter.next().collect().iterator(); while (metricFamilySamples.hasNext()) { next = filter(metricFamilySamples.next()); if (next != null) { return; } } } } }
@Override public List<MetricFamilySamples> collect() { ArrayList<MetricFamilySamples> samples = new ArrayList<MetricFamilySamples>(); for (PublicMetrics publicMetrics : this.publicMetrics) { for (Metric<?> metric : publicMetrics.metrics()) { String name = Collector.sanitizeMetricName(metric.getName()); double value = metric.getValue().doubleValue(); MetricFamilySamples metricFamilySamples = new MetricFamilySamples( name, Type.GAUGE, name, Collections.singletonList( new MetricFamilySamples.Sample(name, Collections.<String>emptyList(), Collections.<String>emptyList(), value))); samples.add(metricFamilySamples); } } return samples; }
private List<String> collectorNames(Collector m) { List<Collector.MetricFamilySamples> mfs; if (m instanceof Collector.Describable) { mfs = ((Collector.Describable) m).describe(); } else if (autoDescribe) { mfs = m.collect(); } else { mfs = Collections.emptyList(); } List<String> names = new ArrayList<String>(); for (Collector.MetricFamilySamples family : mfs) { switch (family.type) { case SUMMARY: names.add(family.name + "_count"); names.add(family.name + "_sum"); names.add(family.name); break; case HISTOGRAM: names.add(family.name + "_count"); names.add(family.name + "_sum"); names.add(family.name + "_bucket"); names.add(family.name); break; default: names.add(family.name); } } return names; }
public SummaryMetricFamily addMetric(List<String> labelValues, double count, double sum, List<Double> quantiles) { if (labelValues.size() != labelNames.size()) { throw new IllegalArgumentException("Incorrect number of labels."); } if (this.quantiles.size() != quantiles.size()) { throw new IllegalArgumentException("Incorrect number of quantiles."); } samples.add(new Sample(name + "_count", labelNames, labelValues, count)); samples.add(new Sample(name + "_sum", labelNames, labelValues, sum)); List<String> labelNamesWithQuantile = new ArrayList<String>(labelNames); labelNamesWithQuantile.add("quantile"); for (int i = 0; i < quantiles.size(); i++) { List<String> labelValuesWithQuantile = new ArrayList<String>(labelValues); labelValuesWithQuantile.add(Collector.doubleToGoString(this.quantiles.get(i))); samples.add(new Sample(name, labelNamesWithQuantile, labelValuesWithQuantile, quantiles.get(i))); } return this; } }
/** * Register the Collector with the default registry. */ public <T extends Collector> T register() { return register(CollectorRegistry.defaultRegistry); }
private String completeName(String name) { String completeName = scope.isEmpty() ? name : Joiner.on('_').join(scope, name); return Collector.sanitizeMetricName(completeName); } }
/** * @see MetricMBean#getValues() */ @Override public Map<Map<String, String>, Double> getValues() { Map<Map<String, String>, Double> result = new HashMap<>(); for (Collector.MetricFamilySamples samples : metric.collect()) { for (Collector.MetricFamilySamples.Sample sample : samples.samples) { Map<String, String> labels = new HashMap<>(); for (int i = 0; i < sample.labelNames.size(); i++) { labels.put(sample.labelNames.get(i), sample.labelValues.get(i)); } result.put(labels, sample.value); } } return result; } }
writer.write(Collector.doubleToGoString(sample.value)); if (sample.timestampMs != null){ writer.write(' ');
@Override public <T extends Collector> T register(CollectorRegistry registry) { if (sessionFactories.isEmpty()) { throw new IllegalStateException("You must register at least one SessionFactory."); } return super.register(registry); }
@Override public String getStatsName(String... statsComponents) { String completeName; if (statsComponents.length == 0) { return ""; } else if (statsComponents[0].isEmpty()) { completeName = StringUtils.join(statsComponents, '_', 1, statsComponents.length); } else { completeName = StringUtils.join(statsComponents, '_'); } return Collector.sanitizeMetricName(completeName); } });
private void findNextElement() { next = null; while (metricFamilySamples != null && metricFamilySamples.hasNext()) { next = filter(metricFamilySamples.next()); if (next != null) { return; } } if (next == null) { while (collectorIter.hasNext()) { metricFamilySamples = collectorIter.next().collect().iterator(); while (metricFamilySamples.hasNext()) { next = filter(metricFamilySamples.next()); if (next != null) { return; } } } } }
private double getQuantile(double q) { return defaultRegistry.getSampleValue(name, QUANTILE_LABEL, new String[] { Collector.doubleToGoString(q) }) .doubleValue(); }
@Override public <T extends Collector> T register(CollectorRegistry registry) { if (queuedThreadPoolMap.isEmpty()) { throw new IllegalStateException("You must register at least one QueuedThreadPool."); } return super.register(registry); }
@VisibleForTesting static List<String> convertToLabelNames(List<LabelKey> labelKeys) { final List<String> labelNames = new ArrayList<String>(labelKeys.size()); for (LabelKey labelKey : labelKeys) { labelNames.add(Collector.sanitizeMetricName(labelKey.getKey())); } return labelNames; }
private List<String> collectorNames(Collector m) { List<Collector.MetricFamilySamples> mfs; if (m instanceof Collector.Describable) { mfs = ((Collector.Describable) m).describe(); } else if (autoDescribe) { mfs = m.collect(); } else { mfs = Collections.emptyList(); } List<String> names = new ArrayList<String>(); for (Collector.MetricFamilySamples family : mfs) { switch (family.type) { case SUMMARY: names.add(family.name + "_count"); names.add(family.name + "_sum"); names.add(family.name); break; case HISTOGRAM: names.add(family.name + "_count"); names.add(family.name + "_sum"); names.add(family.name + "_bucket"); names.add(family.name); break; default: names.add(family.name); } } return names; }
static void writeMetricsCollectedByPrometheusClient(Writer w, CollectorRegistry registry) throws IOException { Enumeration<MetricFamilySamples> metricFamilySamples = registry.metricFamilySamples(); while (metricFamilySamples.hasMoreElements()) { MetricFamilySamples metricFamily = metricFamilySamples.nextElement(); for (int i = 0; i < metricFamily.samples.size(); i++) { Sample sample = metricFamily.samples.get(i); w.write(sample.name); w.write('{'); for (int j = 0; j < sample.labelNames.size(); j++) { if (j != 0) { w.write(", "); } w.write(sample.labelNames.get(j)); w.write("=\""); w.write(sample.labelValues.get(j)); w.write('"'); } w.write("} "); w.write(Collector.doubleToGoString(sample.value)); w.write('\n'); } } } }
/** * Pushes all metrics in a Collector, replacing only previously pushed metrics of the same name, job and grouping key. * <p> * This is useful for pushing a single Gauge. * <p> * This uses the POST HTTP method. */ public void pushAdd(Collector collector, String job, Map<String, String> groupingKey) throws IOException { CollectorRegistry registry = new CollectorRegistry(); collector.register(registry); pushAdd(registry, job, groupingKey); }