2016-05-10 6 views
0

У меня есть метрика, которая не легко вписывается в счетчик или датчик (это просто размер конкретного кеша, который я хочу открыть).Spring Boot Public Metric не экспортируется JmxMetricWriter

Так я изменен существующий класс для реализации PublicMetrics:

@Component 
public class MyMetric implements PublicMetrics 

, а затем выставить метрику:

@Override 
public Collection<Metric<?>> metrics() { 
    Collection<Metric<?>> metrics = new TreeSet<Metric<?>>(); 
    Metric<Integer> cacheSize = new Metric<Integer>("gauge.cacheSize",cacheSize); 
    metrics.add(cacheSize); 
    return metrics; 
} 

Весна загрузки документы состояние:

«Для того, чтобы добавить дополнительные метрики, которые вычисляются каждый раз, когда вызывается конечная точка метрики, просто регистрируйте дополнительные компоненты реализации PublicMetrics. По умолчанию все такие компоненты собраны endp oint «.

Так что для того, чтобы разоблачить эти дополнительные метрики через JMX, я думал, что это будет экспортировать их вместе с отказом от метрики коробки:

@Bean 
@ExportMetricWriter 
MetricWriter metricWriter(MBeanExporter exporter) { 
    return new JmxMetricWriter(exporter); 
} 

Но мои показатели не появляются, когда я смотрю на mbeans в JConsole или VisualVM.

Что я делаю неправильно здесь с точки зрения их экспорта, и есть ли более простой способ разоблачения какого-либо состояния (я не вводил счетчик или калибровку, поскольку у меня нет подходящего метода для их ввода в)?

Update:

Если я называю данные org.springframework.boot.Endpoint.metricsEndpoint() операция мой калибр правильно возвращается с правильными значениями, это только JMX экспортер, который не экспортирует его как MBean.

ответ

2

Оказывается, что это решение (см here)

Толчок и тянуть метрики автоматически экспонируется через конечную точку/метрик. Но из коробки только метрики pull автоматически экспортируются через MetricWriters. Чтобы экспортировать подтягивания метрики (например PublicMetrics) вы должны определить MetricsEndpointMetricReader боб, как это:

@Bean 
public MetricsEndpointMetricReader metricsEndpointMetricReader(MetricsEndpoint metricsEndpoint) { 
    return new MetricsEndpointMetricReader(metricsEndpoint); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^