I'm using Metricbeat to send to a 3rd party logstash, and it's working well with system
but there seems to be some trouble with statsd
(running on localhost:8125
). My current metricbeat.yml
looks like this (with some other logstash params):
metricbeat.config.modules:
# Glob pattern for configuration loading
path: ${path.config}/modules.d/*.yml
# Set to true to enable config reloading
reload.enabled: false
metricbeat.modules:
- module: statsd
host: localhost
port: 8125
metricsets:
- server
enabled: true
# ======================= Elasticsearch template setting =======================
setup.template.settings:
index.number_of_shards: 1
index.codec: best_compression
#_source.enabled: false
Now, I do ./metricbeat modules enable statsd
and then ./metricbeat -e
to watch it run. I get this:
2020-10-12T11:59:43.447-0400 DEBUG [module] module/wrapper.go:181 statsd/server will start after 3.081425219s
2020-10-12T11:59:43.447-0400 DEBUG [cfgfile] cfgfile/cfgfile.go:193 Load config from file: /Users/xxx/code/metricbeat-7.9.2-darwin-x86_64/modules.d/statsd.yml
2020-10-12T11:59:43.448-0400 DEBUG [cfgfile] cfgfile/reload.go:146 Number of module configs found: 1
2020-10-12T11:59:43.449-0400 INFO cfgfile/reload.go:164 Config reloader started
2020-10-12T11:59:43.449-0400 DEBUG [cfgfile] cfgfile/reload.go:194 Scan for new config files
2020-10-12T11:59:43.449-0400 DEBUG [cfgfile] cfgfile/cfgfile.go:193 Load config from file: /Users/xxx/code/metricbeat-7.9.2-darwin-x86_64/modules.d/statsd.yml
But as soon as I view /Users/xxx/code/metricbeat-7.9.2-darwin-x86_64/modules.d/statsd.yml
, it says its disabled!:
- module: statsd
host: "localhost"
port: "8125"
enabled: false
I finally edited the statsd.yml
, setup again, and ran it again, but still to no avail. No metrics are coming in from statsd (though statsd
is most definitely tracking them). For what it's worth, I also did get this one error (though it seems to have disappeared now):
2020-10-12T11:43:08.892-0400 ERROR runtime/panic.go:212 recovered from panic while fetching 'statsd/server' for host ''. Recovering, but please report this.
{"panic": "runtime error: invalid memory address or nil pointer dereference", "stack": "github.com/elastic/beats/v7/libbeat/logp.Recover\n\t/go/src/github.com/elastic/beats/libbeat/logp/global.go:101\nruntime.gopanic\n\t/usr/local/go/src/runtime/panic.go:969\nruntime.panicmem\n\t/usr/local/go/src/runtime/panic.go:212\nruntime.sigpanic\n\t/usr/local/go/src/runtime/signal_unix.go:695\ngithub.com/elastic/beats/v7/metricbeat/helper/server/udp.(*UdpServer).Stop\n\t/go/src/github.com/elastic/beats/metricbeat/helper/server/udp/udp.go:122\ngithub.com/elastic/beats/v7/x-pack/metricbeat/module/statsd/server.(*MetricSet).Run\n\t/go/src/github.com/elastic/beats/x-pack/metricbeat/module/statsd/server/server.go:102\ngithub.com/elastic/beats/v7/metricbeat/mb/module.(*metricSetWrapper).run\n\t/go/src/github.com/elastic/beats/metricbeat/mb/module/wrapper.go:203\ngithub.com/elastic/beats/v7/metricbeat/mb/module.(*Wrapper).Start.func1\n\t/go/src/github.com/elastic/beats/metricbeat/mb/module/wrapper.go:147"}
I have a few questions on Metricbeat with statsd:
- what is the difference between
modules.d/statsd.yml
andmetricbeat.modules
inmetricbeat.yml
, and do I have to set both up? - is there anything on the
statsd
side that I have to do to make it compatible with Metricbeat, beyond matching the IP and port? - are there any simple examples of Metricbeat actually working with statsd? I can't seem to find a single one online