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_151-b12",vendor="Oracle Corporation",runtime="OpenJDK Runtime Environment",} 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", "runtime"));
035        jvmInfo.addMetric(
036                Arrays.asList(
037                    System.getProperty("java.runtime.version", "unknown"),
038                    System.getProperty("java.vm.vendor", "unknown"),
039                    System.getProperty("java.runtime.name", "unknown")),
040                    1L);
041        mfs.add(jvmInfo);
042
043        return mfs;
044    }
045}