001package io.prometheus.client.hotspot;
002
003import io.prometheus.client.Collector;
004import io.prometheus.client.Info;
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        Info i = Info.build().name("jvm").help("VM version info").create();
030        i.info(
031            "version", System.getProperty("java.runtime.version", "unknown"),
032            "vendor", System.getProperty("java.vm.vendor", "unknown"),
033            "runtime", System.getProperty("java.runtime.name", "unknown")
034        );
035        return i.collect();
036    }
037}