001package io.prometheus.cloudwatch; 002 003import io.prometheus.client.Collector; 004import java.io.IOException; 005import java.util.ArrayList; 006import java.util.List; 007import java.util.Properties; 008import java.util.logging.Level; 009import java.util.logging.Logger; 010 011public class BuildInfoCollector extends Collector { 012 private static final Logger LOGGER = Logger.getLogger(CloudWatchCollector.class.getName()); 013 014 public List<MetricFamilySamples> collect() { 015 List<MetricFamilySamples> mfs = new ArrayList<>(); 016 List<MetricFamilySamples.Sample> samples; 017 List<String> labelNames = new ArrayList<>(); 018 List<String> labelValues = new ArrayList<>(); 019 020 String buildVersion = ""; 021 String releaseDate = ""; 022 try { 023 final Properties properties = new Properties(); 024 properties.load( 025 CloudWatchCollector.class.getClassLoader().getResourceAsStream(".properties")); 026 buildVersion = properties.getProperty("BuildVersion"); 027 releaseDate = properties.getProperty("ReleaseDate"); 028 029 } catch (IOException e) { 030 buildVersion = "unknown"; 031 releaseDate = "unknown"; 032 LOGGER.log(Level.WARNING, "CloudWatch build info scrape failed", e); 033 } 034 035 labelNames.add("build_version"); 036 labelValues.add(buildVersion); 037 labelNames.add("release_date"); 038 labelValues.add(releaseDate); 039 040 samples = new ArrayList<>(); 041 samples.add( 042 new MetricFamilySamples.Sample( 043 "cloudwatch_exporter_build_info", labelNames, labelValues, 1)); 044 mfs.add( 045 new MetricFamilySamples( 046 "cloudwatch_exporter_build_info", 047 Type.GAUGE, 048 "Non-zero if build info scrape failed.", 049 samples)); 050 051 return mfs; 052 } 053}