We should write a plugin which receives statsd (specifically dogstatsd) metrics from DC/OS applications.
It should expose an API which allows:
- creation of statsd servers
- removal of statsd servers
The statsd creation method should require the user to pass the task definition.
When the creation method is triggered, the plugin should start a statsd server on an ephemeral port. It should return the port to the caller.
All metrics received on the statsd server must be tagged with:
- service_name (ie framework name)
- all task labels prefixed DCOS_METRICS_, eg a task labeled DCOS_METRICS_FOO=bar should be tagged FOO=bar
When the removal method is triggered, the plugin should stop the statsd server.
The detail of these API methods should be agreed with the owner of the mesos module ticket (DCOS-38209) ahead of time.
The plugin should additionally perform a crash-recovery procedure on startup. It should:
- retrieve a list of expected statsd servers and associated task definitions from the mesos module
- if that list is nonzero, start all such servers and then run as normal