statsd
Version:
Network daemon for the collection and aggregation of realtime application metrics
72 lines (55 loc) • 2.71 kB
Markdown
# Backend Interface
Backend modules are Node.js [modules][nodemods] that listen for a
number of events emitted from StatsD. Each backend module should
export the following initialization function:
* `init(startup_time, config, events, logger)`: This method is invoked
from StatsD to initialize the backend module. It accepts four
parameters: `startup_time` is the startup time of StatsD in epoch
seconds, `config` is the parsed config file hash, `events` is the
event emitter that backends can use to listen for events and
`logger` is StatsD's configured logger for backends to use.
The backend module should return `true` from init() to indicate
success. A return of `false` indicates a failure to load the module
(missing configuration?) and will cause StatsD to exit.
Backends can listen for the following events emitted by StatsD from
the `events` object:
* Event: **'flush'**
Parameters: `(time_stamp, metrics)`
Emitted on each flush interval so that backends can push aggregate
metrics to their respective backend services. The event is passed
two parameters: `time_stamp` is the current time in epoch seconds
and `metrics` is a hash representing the StatsD statistics:
```
metrics: {
counters: counters,
gauges: gauges,
timers: timers,
sets: sets,
counter_rates: counter_rates,
timer_data: timer_data,
statsd_metrics: statsd_metrics,
pctThreshold: pctThreshold
}
```
The counter_rates and timer_data are precalculated statistics to simplify
the creation of backends, the statsd_metrics hash contains metrics generated
by StatsD itself. Each backend module is passed the same set of
statistics, so a backend module should treat the metrics as immutable
structures. StatsD will reset timers and counters after each
listener has handled the event.
* Event: **'status'**
Parameters: `(writeCb)`
Emitted when a user invokes a *stats* command on the management
server port. It allows each backend module to dump backend-specific
status statistics to the management port.
The `writeCb` callback function has a signature of `f(error,
backend_name, stat_name, stat_value)`. The backend module should
invoke this method with each stat_name and stat_value that should be
sent to the management port. StatsD will prefix each stat name with
the `backend_name`. The backend should set `error` to *null*, or, in
the case of a failure, an appropriate error.
* Event: **'packet'**
Parameters: `(packet, rinfo)`
This is emitted for every incoming packet. The `packet` parameter contains
the raw received message string and the `rinfo` parameter contains remote
address information from the UDP socket.