pushgateway VS statsd_exporter

Compare pushgateway vs statsd_exporter and see what are their differences.

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
pushgateway statsd_exporter
8 3
2,881 895
2.0% 1.5%
8.1 7.7
11 days ago 11 days ago
Go Go
Apache License 2.0 Apache License 2.0
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

pushgateway

Posts with mentions or reviews of pushgateway. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-04-09.
  • Tools for frontend monitoring with Prometheus
    6 projects | dev.to | 9 Apr 2024
    Pushgateway
  • Monitoring with Custom Metrics
    2 projects | dev.to | 2 Mar 2023
    In case the Custom Metric is related to a job or a short-living script, consider using Pushgateway.
  • Bucketed data from jenkins?
    1 project | /r/PrometheusMonitoring | 9 Feb 2023
    So my idea is to have a python script that buckets data and then publishes it again using pushtogateway: https://github.com/prometheus/pushgateway
  • The right tool for pulling data from random via REST API.
    2 projects | /r/PrometheusMonitoring | 7 Feb 2023
    Is the cron job with a script for getting metric and pushing via https://github.com/prometheus/pushgateway the right way for this task?
  • On the Prometheus Push Gateway
    1 project | dev.to | 1 Jan 2023
    The push gateway is a relatively simple service. There’s one main entry point file (main.go) and an api file (api.go) both at 279 lines log. There’s probably a dozen or so api endpoints, but the key one is the one where you post metrics, defined here
  • "The Pushgateway is not an event store. [...] tracking something like release events has to happen with some event-logging framework."
    2 projects | /r/PrometheusMonitoring | 25 Oct 2022
    We are currently evaluating timeseries databases to build an internal tool for DORA metrics and just looking at prometheus. As tracking releases is more of a push based use case, I looked at pushgateway and the docs stated the following "The Pushgateway is not an event store. [...] tracking something like release events has to happen with some event-logging framework." here
  • Monitoring short lived applications
    1 project | /r/PrometheusMonitoring | 11 Nov 2021
    Checked this out? https://github.com/prometheus/pushgateway
  • Ask HN: Prometheus vs. StatsD / Telegraf
    5 projects | news.ycombinator.com | 11 Apr 2021
    While I somehow understand Prometheus idea that pull is easier to scale than push I've had a bad luck with it.

    First of all Prometheus doesn't even consider monitoring of long-running jobs other than pull way (which didn't make sense for me). There is push gateway [0] but clients libraries seem to consider it only for short-lived jobs where you can send the metrics at the end [1]. It seems I couldn't "push" from long living jobs trivially

    Second when using it for example with django you have to be careful with how you handle multiprocessing that UWSGI/gunicorn does, see [2] - it has bitten me at leas once.

    Comparing to push model where I can just push metrics to [3] statsd_exporter directly and be done with it, but support for statsd is lacking both in terms of frameworks (everyone seems to be migrating to native clients...) and functionality (you've to do labeling basically manually [4])

    To sum up: Prometheus is really great when it works, until you try to go off-track (intentionally or not, see django [2]) then you see its all undiscovered and immature landscape

    [0] https://github.com/prometheus/pushgateway

statsd_exporter

Posts with mentions or reviews of statsd_exporter. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-08-08.
  • Help: UDP proxy/relay to multiple destinations
    2 projects | /r/sysadmin | 8 Aug 2022
    It's part of the statsd_exporter.
  • Ask HN: Prometheus vs. StatsD / Telegraf
    5 projects | news.ycombinator.com | 11 Apr 2021
  • Statsd + Prometheus on Grafana Cloud
    1 project | dev.to | 21 Mar 2021
    package metrics import ( "fmt" "strings" "time" "github.com/alexcesaro/statsd" ) // Hybrid metrics type Hybrid struct { Statsd StatsdConfig Client *statsd.Client AttachLabels bool } // StatsdConfig ... type StatsdConfig struct { Host string Prefix string } // Init ... func (m *Hybrid) Init() error { // Set up the statsd client client, err := statsd.New( statsd.Address(m.Statsd.Host), statsd.Prefix(m.Statsd.Prefix), statsd.FlushPeriod(time.Second*1), ) if err != nil { return fmt.Errorf("Hybrid: Could not connect to %s: %s", m.Statsd.Host, err.Error()) } m.Client = client return nil } // Format key with labels func (m *Hybrid) formatKeyWithLabels(key string, labels map[string]string) string { // Do we want to attach labels? if m.AttachLabels == false { return key } // Use librato-style tags // metrim.name#tagName=val,tag2Name=val2:0|c // https://github.com/prometheus/statsd_exporter#tagging-extensions if len(key) == 0 { return key } formattedLabels := []string{} for labelKey, labelVal := range labels { formattedLabels = append(formattedLabels, fmt.Sprintf("%s=%s", labelKey, labelVal)) } joinedFormattedLabels := strings.TrimSpace(strings.Join(formattedLabels, ",")) if joinedFormattedLabels != "" { key = fmt.Sprintf("%s#%s", key, joinedFormattedLabels) } return strings.Trim(key, "#") } // Increment ... func (m *Hybrid) Increment(key string, labels map[string]string) { m.IncrementBy(key, 1, labels) } // IncrementBy ... func (m *Hybrid) IncrementBy(key string, by int, labels map[string]string) { updatedKey := m.formatKeyWithLabels(key, labels) if m.Client != nil { m.Client.Count(updatedKey, by) } } // Gauge ... func (m *Hybrid) Gauge(key string, value int, labels map[string]string) { updatedKey := m.formatKeyWithLabels(key, labels) if m.Client != nil { m.Client.Gauge(updatedKey, value) } }

What are some alternatives?

When comparing pushgateway and statsd_exporter you can also consider the following projects:

django-prometheus - Export Django monitoring metrics for Prometheus.io

prometheus - The Prometheus monitoring system and time series database.

windows_exporter - Prometheus exporter for Windows machines

client_python - Prometheus instrumentation library for Python applications

process-exporter - Prometheus exporter that mines /proc to report on selected processes

fourkeys - Platform for monitoring the four key software delivery metrics of software delivery

haproxy_exporter - Simple server that scrapes HAProxy stats and exports them via HTTP for Prometheus consumption

json_exporter - A prometheus exporter which scrapes remote JSON by JSONPath

script_exporter - Prometheus exporter to execute scripts and collect metrics from the output or the exit status.

material-ui - MUI Core (formerly Material UI) is the React UI library you always wanted. Follow your own design system, or start with Material Design. [Moved to: https://github.com/mui/material-ui]