001package io.prometheus.client.hotspot;
002
003import io.prometheus.client.Collector;
004import io.prometheus.client.GaugeMetricFamily;
005
006import java.util.ArrayList;
007import java.util.Arrays;
008import java.util.List;
009
010/**
011 * Exports JVM version info.
012 * <p>
013 * Example usage:
014 * <pre>
015 * {@code
016 *   new VersionInfoExports().register();
017 * }
018 * </pre>
019 * Metrics being exported:
020 * <pre>
021 *   jvm_info{version="1.8.0_45-b14",vendor="Oracle Corporation"} 1.0
022 * </pre>
023 */
024
025public class VersionInfoExports extends Collector {
026
027
028    public List<MetricFamilySamples> collect() {
029        List<MetricFamilySamples> mfs = new ArrayList<MetricFamilySamples>();
030
031        GaugeMetricFamily jvmInfo = new GaugeMetricFamily(
032                "jvm_info",
033                "JVM version info",
034                Arrays.asList("version", "vendor"));
035        jvmInfo.addMetric(Arrays.asList(System.getProperty("java.runtime.version", "unknown"), System.getProperty("java.vm.vendor", "unknown")), 1L);
036        mfs.add(jvmInfo);
037
038        return mfs;
039    }
040}