Search in sources :

Example 1 with GangliaReporter

use of com.yammer.metrics.reporting.GangliaReporter in project nifi by apache.

the class StandardGangliaReporter method onConfigure.

@OnScheduled
public void onConfigure(final ConfigurationContext config) throws InitializationException {
    metricsRegistry = new MetricsRegistry();
    metricsRegistry.newGauge(new MetricName(METRICS_GROUP, "int32", "FlowFiles Received Last 5 mins"), new Gauge<Integer>() {

        @Override
        public Integer value() {
            final ProcessGroupStatus status = latestStatus.get();
            if (status == null) {
                return 0;
            }
            final Integer value = status.getFlowFilesReceived();
            return (value == null) ? 0 : value;
        }
    });
    metricsRegistry.newGauge(new MetricName(METRICS_GROUP, "int64", "Bytes Received Last 5 mins"), new Gauge<Long>() {

        @Override
        public Long value() {
            final ProcessGroupStatus status = latestStatus.get();
            if (status == null) {
                return 0L;
            }
            return status.getBytesReceived();
        }
    });
    metricsRegistry.newGauge(new MetricName(METRICS_GROUP, "int32", "FlowFiles Sent Last 5 mins"), new Gauge<Integer>() {

        @Override
        public Integer value() {
            final ProcessGroupStatus status = latestStatus.get();
            if (status == null) {
                return 0;
            }
            return status.getFlowFilesSent();
        }
    });
    metricsRegistry.newGauge(new MetricName(METRICS_GROUP, "int64", "Bytes Sent Last 5 mins"), new Gauge<Long>() {

        @Override
        public Long value() {
            final ProcessGroupStatus status = latestStatus.get();
            if (status == null) {
                return 0L;
            }
            return status.getBytesSent();
        }
    });
    metricsRegistry.newGauge(new MetricName(METRICS_GROUP, "int32", "FlowFiles Queued"), new Gauge<Integer>() {

        @Override
        public Integer value() {
            final ProcessGroupStatus status = latestStatus.get();
            if (status == null) {
                return 0;
            }
            final Integer value = status.getQueuedCount();
            return (value == null) ? 0 : value;
        }
    });
    metricsRegistry.newGauge(new MetricName(METRICS_GROUP, "int64", "Bytes Queued"), new Gauge<Long>() {

        @Override
        public Long value() {
            final ProcessGroupStatus status = latestStatus.get();
            if (status == null) {
                return 0L;
            }
            final Long value = status.getQueuedContentSize();
            return (value == null) ? 0L : value;
        }
    });
    metricsRegistry.newGauge(new MetricName(METRICS_GROUP, "int64", "Bytes Read (5 mins)"), new Gauge<Long>() {

        @Override
        public Long value() {
            final ProcessGroupStatus status = latestStatus.get();
            if (status == null) {
                return 0L;
            }
            final Long value = status.getBytesRead();
            return (value == null) ? 0L : value;
        }
    });
    metricsRegistry.newGauge(new MetricName(METRICS_GROUP, "int64", "Bytes Written (5 mins)"), new Gauge<Long>() {

        @Override
        public Long value() {
            final ProcessGroupStatus status = latestStatus.get();
            if (status == null) {
                return 0L;
            }
            final Long value = status.getBytesWritten();
            return (value == null) ? 0L : value;
        }
    });
    metricsRegistry.newGauge(new MetricName(METRICS_GROUP, "int32", "Active Threads"), new Gauge<Integer>() {

        @Override
        public Integer value() {
            final ProcessGroupStatus status = latestStatus.get();
            if (status == null) {
                return 0;
            }
            final Integer value = status.getActiveThreadCount();
            return (value == null) ? 0 : value;
        }
    });
    metricsRegistry.newGauge(new MetricName(METRICS_GROUP, "int32", "Total Task Duration Seconds"), new Gauge<Integer>() {

        @Override
        public Integer value() {
            final ProcessGroupStatus status = latestStatus.get();
            if (status == null) {
                return 0;
            }
            final long nanos = calculateProcessingNanos(status);
            return (int) TimeUnit.NANOSECONDS.toSeconds(nanos);
        }
    });
    final String gangliaHost = config.getProperty(HOSTNAME).getValue();
    final int port = config.getProperty(PORT).asInteger();
    try {
        gangliaReporter = new GangliaReporter(metricsRegistry, gangliaHost, port, METRICS_GROUP) {

            @Override
            protected String sanitizeName(MetricName name) {
                return name.getName();
            }
        };
        gangliaReporter.printVMMetrics = config.getProperty(SEND_JVM_METRICS).asBoolean();
    } catch (final IOException e) {
        throw new InitializationException(e);
    }
}
Also used : ProcessGroupStatus(org.apache.nifi.controller.status.ProcessGroupStatus) MetricsRegistry(com.yammer.metrics.core.MetricsRegistry) GangliaReporter(com.yammer.metrics.reporting.GangliaReporter) IOException(java.io.IOException) InitializationException(org.apache.nifi.reporting.InitializationException) MetricName(com.yammer.metrics.core.MetricName) OnScheduled(org.apache.nifi.annotation.lifecycle.OnScheduled)

Aggregations

MetricName (com.yammer.metrics.core.MetricName)1 MetricsRegistry (com.yammer.metrics.core.MetricsRegistry)1 GangliaReporter (com.yammer.metrics.reporting.GangliaReporter)1 IOException (java.io.IOException)1 OnScheduled (org.apache.nifi.annotation.lifecycle.OnScheduled)1 ProcessGroupStatus (org.apache.nifi.controller.status.ProcessGroupStatus)1 InitializationException (org.apache.nifi.reporting.InitializationException)1