public synchronized void addGraphiteReporter(final String host, final int port,
                                                 final String prefix, final long reportIntervalInMS) {
        if (host == null || host.isEmpty())
            throw new IllegalArgumentException("Host cannot be null or empty");

        Graphite graphite = new Graphite(new InetSocketAddress(host, port));

        GraphiteReporter.Builder b = GraphiteReporter
                .forRegistry(getRegistry());

        if (null != prefix)
            b.prefixedWith(prefix);

        b.filter(MetricFilter.ALL);

        graphiteReporter = b.build(graphite);
        graphiteReporter.start(reportIntervalInMS, TimeUnit.MILLISECONDS);
        log.info("Configured Graphite reporter host={} interval={}ms port={} prefix={}",
                new Object[]{host, reportIntervalInMS, port, prefix});
    }
Create a {@link GraphiteReporter} attached to the {@code MetricsRegistry}.
<p/>
If {@code prefix} is null, then Metrics's internal default prefix is used
(empty string at the time this comment was written).

@param host               the host to which Graphite reports are sent
@param port               the port to which Graphite reports are sent
@param prefix             the optional metrics prefix
@param reportIntervalInMS milliseconds to wait between sending metrics to the configured
                          Graphite host and port
gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/MetricManager.java