samplicator
statsd_exporter
samplicator | statsd_exporter | |
---|---|---|
11 | 3 | |
382 | 897 | |
- | 1.1% | |
0.0 | 7.7 | |
8 months ago | 15 days ago | |
C | Go | |
GNU General Public License v3.0 only | Apache License 2.0 |
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.
samplicator
-
Forward SNMP traps using snmptrapd without changing the source IP?
However, if the SNMP traps happen over UDP (and I think they do, SNMP generally travels over UDP) you can use something like samplicator to receive and re-send the traps while spoofing an IP address. The -S flag tells it which IP address to spoof.
- UDP Directors?
- How do you force local DNS server usage?
-
Help: UDP proxy/relay to multiple destinations
This tool should help with the UDP duplication beyond the two target challenge with iptables: https://github.com/sleinen/samplicator - still, some additional details on the app/data being transmitted would help; data actually push only? Did you verify that targets other than the original host would correctly interpret the data?
- Help: UDP relay/proxy to multiple destinations
-
Network Hub (not switch)
You could also flip this idea on its head and point the feed at something which will replicate the packets to both the endpoints, like samplicator, which you could run on one or the other of the servers if you wanted. I use this sometimes to replicate netflow or syslog data. It does create a bit more dependency chaining, but is simple and basically 'free'.
-
Multiple Netflow Export Destinations from Fortigate
I can't say for sure on the Fortigate, but I use Samplicator for duplicating flows to more collectors than my equipment can export to.
-
Samplicator
Samplicator is a simple tool for receiving UDP datagrams on a given port and resending them to a specified set of receivers for occasions when you need to export NetFlow traffic to more than one NetFlow collector. Can also be configured to individually specify a sampling divisor N for each receiver that will only receive one in N of the received packets. crankynetadmin adds, "It's normally used for replicating netflow data, but can also replicate any UDP traffic."
- Service/app to rebroadcast/relay WOL packets?
-
nfsen vs fastnetmon for sFlow and DDoS monitoring
As another commented mentioned we use Samplicator. Works for lots of different UDP traffic.
statsd_exporter
-
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?
FastNetMon - FastNetMon - very fast DDoS sensor with sFlow/Netflow/IPFIX/SPAN support
pushgateway - Push acceptor for ephemeral and batch jobs.
rtlmuxer - rtl_tcp stream splitter
django-prometheus - Export Django monitoring metrics for Prometheus.io
dump1090 - Dump1090 is a simple Mode S decoder for RTLSDR devices
windows_exporter - Prometheus exporter for Windows machines
DupUDP - simple python script for duplicating UDP traffic
process-exporter - Prometheus exporter that mines /proc to report on selected processes
haproxy_exporter - Simple server that scrapes HAProxy stats and exports them via HTTP for Prometheus consumption
script_exporter - Prometheus exporter to execute scripts and collect metrics from the output or the exit status.
client_python - Prometheus instrumentation library for Python applications
prometheus - The Prometheus monitoring system and time series database.