process-exporter
Prometheus exporter that mines /proc to report on selected processes (by ncabatoff)
statsd_exporter
StatsD to Prometheus metrics exporter (by prometheus)
process-exporter | statsd_exporter | |
---|---|---|
6 | 3 | |
1,570 | 895 | |
- | 1.5% | |
5.4 | 7.7 | |
5 days ago | 12 days ago | |
Go | Go | |
MIT License | 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.
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.
process-exporter
Posts with mentions or reviews of process-exporter.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2023-01-08.
-
Looking for an open source monitoring solution that will capture specific process info
OP is specifically asking about MacOS, but for *nix use-cases, there's the process_exporter that works to expose process level statistics. https://github.com/ncabatoff/process-exporter
- Monitor the highest CPU consuming process in prometheus
-
Linux process monitoring solutions
However, the process_exporter is useful for some situations where software has complex subprocess management and you want to track based on the cmdline running. For example all of the various PostgreSQL worker processes.
- Anyone using Process Exporter? How is your prometheus yml file configure for it?
-
Anyone using Process Exporter?
yes. The config options are different though. Just see the README https://github.com/ncabatoff/process-exporter
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
It's part of the statsd_exporter.
- Ask HN: Prometheus vs. StatsD / Telegraf
-
Statsd + Prometheus on Grafana Cloud
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 process-exporter and statsd_exporter you can also consider the following projects:
node_exporter - Exporter for machine metrics
pushgateway - Push acceptor for ephemeral and batch jobs.