Live feature.

Instead of pulling all metrics in http, this feature allows Seyren to listen carbon relay pickle protocol (http://graphite.readthedocs.org/en/latest/feeding-carbon.html#pickle).
So I introduce live package where CarbonPickleListener (aka TCP server) is located.
CarbonPickleListener reads inputstream socket, decode pickle protocol with jython dependency, and a MetricsTask to an executor.
MetricsTask find all checks in MongoDb that are enabled and live with true value.
I re-use CheckRunner to send alert or not.

So, if live value is false, http check is used (default behaviour).
Users are responsible to filter metrics in relay-rules.conf and not send all metrics to Seyren to avoid performance problem.

Exemple to send to Seyren only load metrics, edit /opt/graphite/conf/relay-rules.conf like:

[seyren]
pattern = .*load.*
destinations = [ip seyren]:[port]:[instance]
continue = true

[default]
default = true
destinations = [ip carbon cache]:[port]:[instance]