An extension to Coda Hale's excellent Metrics library. It
provides GraphitePickleReporter
, which allows your application to stream metric values
to a Graphite server using graphite's pickle receiver.
This is recommended if sending large amounts of data:
GraphitePickleReporter.enable(1, TimeUnit.MINUTES, "graphite.example.com", 2004);
To add metrics-graphite-pickle
to your project:
<dependency>
<groupId>com.brightcove.metrics</groupId>
<artifactId>metrics-graphite-pickle</artifactId>
<version>1.2.0</version>
</dependency>
- Stop using jython for metrics pickling. Hand-coded minimal pickling of the primitive data types. Jython unpickling remains in use during tests.
- Modify the
GraphitePickleReporter
to useexecutor.scheduleAtFixedRate
rather thanexecutor.scheduleWithFixedDelay
(will be unnecessary after upgrading to metrics 3.0.0) - Upgrade to metrics-core-2.2.0
- Upgrade to metrics-graphite-2.2.0
- Upgrade to jython-standalone-2.5.3
- Upgrade to slf4j 1.7.2
- Fixed a bug where a null prefix caused the last word in a metric name to be lost in some cases (e.g. 'mean')
- Upgrade to metrics-graphite-2.1.3
- Move the creation of MetricsPickler back into the run method but use a synchronized method to ensure it is only created once. This improves startup time by a few seconds in some cases.
- Moved the creation of the jython script engine out of the reporter's "run" method. This should fix a memory leak caused by ThreadLocal entries that never got cleaned up.
- Upgrade to metrics-graphite 2.1.2
- Changed encoding to ISO-8859-1 to match the python default
- Fixed a bug where a
batchSize
passed toenable
was ignored. - Recreates the socket on each batch to prevent reaching the 100K byte limit (and a broken pipe)
Initial release.