在simpleclient Java README中,示例Collector
如下所示:
class YourCustomCollector extends Collector {
List<MetricFamilySamples> collect() {
List<MetricFamilySamples> mfs = new ArrayList<MetricFamilySamples>();
// With no labels.
mfs.add(new GaugeMetricFamily("my_gauge", "help", 42));
// With labels
GaugeMetricFamily labeledGauge = new GaugeMetricFamily("my_other_gauge", "help", Arrays.asList("labelname"));
labeledGauge.addMetric(Arrays.asList("foo"), 4);
labeledGauge.addMetric(Arrays.asList("bar"), 5);
mfs.add(labeledGauge);
return mfs;
}
}
// Registration
static final YourCustomCollector requests = new YourCustomCollector().register()
必须在每次调用collect
时实例化指标,还是将它们实例化一次然后在addMetric
中调用collect
是合理的吗?如果没有,这种方法会出现什么问题?
答案 0 :(得分:0)
是的,MetricFamilies应该(几乎)总是在每个集合上重新实例化。
实例化一次,然后在collect中调用addMetric,是否合理?
那不是线程安全的,您还需要做一些事情来清除各个集合中的内容。