Class PushGateway


  • public class PushGateway
    extends Object
    Export metrics via the Prometheus Pushgateway.

    The Prometheus Pushgateway exists to allow ephemeral and batch jobs to expose their metrics to Prometheus. Since these kinds of jobs may not exist long enough to be scraped, they can instead push their metrics to a Pushgateway. This class allows pushing the contents of a CollectorRegistry to a Pushgateway.

    Example usage:

     
       void executeBatchJob() throws Exception {
         CollectorRegistry registry = new CollectorRegistry();
         Gauge duration = Gauge.build()
             .name("my_batch_job_duration_seconds").help("Duration of my batch job in seconds.").register(registry);
         Gauge.Timer durationTimer = duration.startTimer();
         try {
           // Your code here.
    
           // This is only added to the registry after success,
           // so that a previous success in the Pushgateway isn't overwritten on failure.
           Gauge lastSuccess = Gauge.build()
               .name("my_batch_job_last_success").help("Last time my batch job succeeded, in unixtime.").register(registry);
           lastSuccess.setToCurrentTime();
         } finally {
           durationTimer.setDuration();
           PushGateway pg = new PushGateway("127.0.0.1:9091");
           pg.pushAdd(registry, "my_batch_job");
         }
       }
     
     

    See https://github.com/prometheus/pushgateway

    • Constructor Summary

      Constructors 
      Constructor Description
      PushGateway​(String address)
      Construct a Pushgateway, with the given address.
      PushGateway​(URL serverBaseURL)
      Construct a Pushgateway, with the given URL.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void delete​(String job)
      Deletes metrics from the Pushgateway.
      void delete​(String job, Map<String,​String> groupingKey)
      Deletes metrics from the Pushgateway.
      static Map<String,​String> instanceIPGroupingKey()
      Returns a grouping key with the instance label set to the machine's IP address.
      void push​(io.prometheus.client.CollectorRegistry registry, String job)
      Pushes all metrics in a registry, replacing all those with the same job and no grouping key.
      void push​(io.prometheus.client.CollectorRegistry registry, String job, Map<String,​String> groupingKey)
      Pushes all metrics in a registry, replacing all those with the same job and grouping key.
      void push​(io.prometheus.client.Collector collector, String job)
      Pushes all metrics in a Collector, replacing all those with the same job and no grouping key.
      void push​(io.prometheus.client.Collector collector, String job, Map<String,​String> groupingKey)
      Pushes all metrics in a Collector, replacing all those with the same job and grouping key.
      void pushAdd​(io.prometheus.client.CollectorRegistry registry, String job)
      Pushes all metrics in a registry, replacing only previously pushed metrics of the same name and job and no grouping key.
      void pushAdd​(io.prometheus.client.CollectorRegistry registry, String job, Map<String,​String> groupingKey)
      Pushes all metrics in a registry, replacing only previously pushed metrics of the same name, job and grouping key.
      void pushAdd​(io.prometheus.client.Collector collector, String job)
      Pushes all metrics in a Collector, replacing only previously pushed metrics of the same name and job and no grouping key.
      void pushAdd​(io.prometheus.client.Collector collector, String job, Map<String,​String> groupingKey)
      Pushes all metrics in a Collector, replacing only previously pushed metrics of the same name, job and grouping key.
      void setConnectionFactory​(HttpConnectionFactory connectionFactory)  
    • Constructor Detail

      • PushGateway

        public PushGateway​(String address)
        Construct a Pushgateway, with the given address.

        Parameters:
        address - host:port or ip:port of the Pushgateway.
      • PushGateway

        public PushGateway​(URL serverBaseURL)
        Construct a Pushgateway, with the given URL.

        Parameters:
        serverBaseURL - the base URL and optional context path of the Pushgateway server.
    • Method Detail

      • push

        public void push​(io.prometheus.client.CollectorRegistry registry,
                         String job)
                  throws IOException
        Pushes all metrics in a registry, replacing all those with the same job and no grouping key.

        This uses the PUT HTTP method.

        Throws:
        IOException
      • push

        public void push​(io.prometheus.client.Collector collector,
                         String job)
                  throws IOException
        Pushes all metrics in a Collector, replacing all those with the same job and no grouping key.

        This is useful for pushing a single Gauge.

        This uses the PUT HTTP method.

        Throws:
        IOException
      • push

        public void push​(io.prometheus.client.CollectorRegistry registry,
                         String job,
                         Map<String,​String> groupingKey)
                  throws IOException
        Pushes all metrics in a registry, replacing all those with the same job and grouping key.

        This uses the PUT HTTP method.

        Throws:
        IOException
      • push

        public void push​(io.prometheus.client.Collector collector,
                         String job,
                         Map<String,​String> groupingKey)
                  throws IOException
        Pushes all metrics in a Collector, replacing all those with the same job and grouping key.

        This is useful for pushing a single Gauge.

        This uses the PUT HTTP method.

        Throws:
        IOException
      • pushAdd

        public void pushAdd​(io.prometheus.client.CollectorRegistry registry,
                            String job)
                     throws IOException
        Pushes all metrics in a registry, replacing only previously pushed metrics of the same name and job and no grouping key.

        This uses the POST HTTP method.

        Throws:
        IOException
      • pushAdd

        public void pushAdd​(io.prometheus.client.Collector collector,
                            String job)
                     throws IOException
        Pushes all metrics in a Collector, replacing only previously pushed metrics of the same name and job and no grouping key.

        This is useful for pushing a single Gauge.

        This uses the POST HTTP method.

        Throws:
        IOException
      • pushAdd

        public void pushAdd​(io.prometheus.client.CollectorRegistry registry,
                            String job,
                            Map<String,​String> groupingKey)
                     throws IOException
        Pushes all metrics in a registry, replacing only previously pushed metrics of the same name, job and grouping key.

        This uses the POST HTTP method.

        Throws:
        IOException
      • pushAdd

        public void pushAdd​(io.prometheus.client.Collector collector,
                            String job,
                            Map<String,​String> groupingKey)
                     throws IOException
        Pushes all metrics in a Collector, replacing only previously pushed metrics of the same name, job and grouping key.

        This is useful for pushing a single Gauge.

        This uses the POST HTTP method.

        Throws:
        IOException
      • delete

        public void delete​(String job)
                    throws IOException
        Deletes metrics from the Pushgateway.

        Deletes metrics with no grouping key and the provided job. This uses the DELETE HTTP method.

        Throws:
        IOException
      • delete

        public void delete​(String job,
                           Map<String,​String> groupingKey)
                    throws IOException
        Deletes metrics from the Pushgateway.

        Deletes metrics with the provided job and grouping key. This uses the DELETE HTTP method.

        Throws:
        IOException