2016-05-10 5 views
0

私は、カウンタまたはゲージに簡単に収まらないメトリックを持っています(公開したい特定のキャッシュのサイズです)。JmxMetricWriterによって公開されていないSpringブートパブリックメトリック

だから私は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実装Beanを登録するだけです。デフォルトでは、すべてのBeanはendpによって収集されますオイント。

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

しかし、私が見たときに私のメトリックが表示されない:

だからJMXを経由して、これらの追加のメトリックを露出させるために、私は、これは箱の指標のうちと一緒にそれらをエクスポートするだろうと思いましたJConsoleまたはVisualVMのmbean。

輸出の点で私が間違っていることは何ですか?また、いくつかの州を公開する簡単な方法があります(これらを注入する適切な方法がないためカウンターやゲージサービスを注入しませんでした)?

アップデート:私はorg.springframework.boot.Endpoint.metricsEndpointデータを呼び出す場合

()操作の私のゲージが正しく正しい値を返され、それは、MBeanとしてそれをエクスポートしていないだけでJMX輸出国です。

答えて

2

これは溶液が(here参照)

プッシュとプルメトリックは自動的に/メトリクスエンドポイントを介して露出されていることが分かります。ただし、プルメトリックのみがMetricWriterを介して自動的にエクスポートされます。

@Bean 
public MetricsEndpointMetricReader metricsEndpointMetricReader(MetricsEndpoint metricsEndpoint) { 
    return new MetricsEndpointMetricReader(metricsEndpoint); 
} 
:あなたはこのようなMetricsEndpointMetricReader Beanを定義する必要があり(例えばPublicMetrics)をプルメトリックをエクスポートするには
関連する問題