Skip to content

privoro/prom-aggregation-gateway

 
 

Repository files navigation

Prometheus Aggregation Gateway

NOTE - this is a privoro fork of prometheus-aggregation-gateway which adds the ability to run a cron job to reset the cached data contained in the gateway See ./prometheus-aggregation-gateway -crontab "*/5 * * * * option!

... ORIGINAL README CONTINUES ...

Prometheus Aggregation Gateway is a aggregating push gateway for Prometheus. As opposed to the official Prometheus Pushgateway, this service aggregates the sample values it receives.

  • Counters where all labels match are added up.
  • Histograms are added up; if bucket boundaries are mismatched then the result has the union of all buckets and counts are given to the lowest bucket that fits.
  • Gauges are also added up (but this may not make any sense)
  • Summaries are discarded.

How to use

Send metrics in Prometheus format to /metrics/

E.g. if you have the program running locally:

echo 'http_requests_total{method="post",code="200"} 1027' | curl --data-binary @- http://localhost/metrics/

Now you can push your metrics using your favorite Prometheus client.

E.g. in Python using prometheus/client_python:

from prometheus_client import CollectorRegistry, Counter, push_to_gateway
registry = CollectorRegistry()
counter = Counter('some_counter', "A counter", registry=registry)
counter.inc()
push_to_gateway('localhost', job='my_job_name', registry=registry)

Then have your Prometheus scrape metrics at /metrics.

Ready-built images

Available on DockerHub weaveworks/prom-aggregation-gateway

According to https://prometheus.io/docs/practices/pushing/:

The Pushgateway never forgets series pushed to it and will expose them to Prometheus forever...

The latter point is especially relevant when multiple instances of a job differentiate their metrics in the Pushgateway via an instance label or similar.

This restriction makes the Prometheus pushgateway inappropriate for the usecase of accepting metrics from a client-side web app, so we created this one to aggregate counters from multiple senders.

Prom-aggregation-gateway presents a similar API, but does not attempt to be a drop-in replacement.

JS Client Library

See https://github.com/weaveworks/promjs/ for a JS client library for Prometheus that can be used from within a web app.

Getting Help

If you have any questions about, feedback for or problems with prom-aggregation-gateway:

Your feedback is always welcome!

About

An aggregating push gateway for Prometheus

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 42.5%
  • Go 18.8%
  • Python 17.2%
  • HCL 13.4%
  • Makefile 4.2%
  • Dockerfile 2.3%
  • Starlark 1.6%