private void initMetrics() { MetricsHelper.initializeMetrics(_serverConf.getMetricsConfig()); MetricsRegistry metricsRegistry = new MetricsRegistry(); MetricsHelper.registerMetricsRegistry(metricsRegistry); _serverMetrics = new ServerMetrics(metricsRegistry, !_serverConf.emitTableLevelMetrics()); _serverMetrics.initializeGlobalMeters(); }
public NettyClientMetrics(MetricsRegistry registry, String group) { _requestsSent = MetricsHelper.newCounter(registry, new MetricName(group, "", REQUESTS_SENT)); _bytesSent = MetricsHelper.newCounter(registry, new MetricName(group, "", BYTES_SENT)); _bytesReceived = MetricsHelper.newCounter(registry, new MetricName(group, "", BYTES_RECEIVED)); _errors = MetricsHelper.newCounter(registry, new MetricName(group, "", ERRORS)); _sendRequestMsHistogram = MetricsHelper.newHistogram(registry, new MetricName(group, "", SEND_REQUEST_MS), false); _responseLatencyMsHistogram = MetricsHelper.newHistogram(registry, new MetricName(group, "", RESPONSE_LATENCY_MS), false); _connectMsGauge = MetricsHelper.newGauge(registry, new MetricName(group, "", CONNECT_TIME), new ConnectMsGauge()); }
/** * Logs the timing for a metric * * @param fullTimerName The full name of timer * @param duration The log time duration time value * @param timeUnit The log time duration time unit */ private void addValueToTimer(String fullTimerName, final long duration, final TimeUnit timeUnit) { final MetricName metricName = new MetricName(_clazz, fullTimerName); com.yammer.metrics.core.Timer timer = MetricsHelper.newTimer(_metricsRegistry, metricName, TimeUnit.MILLISECONDS, TimeUnit.SECONDS); MetricsHelper.newTimer(_metricsRegistry, metricName, TimeUnit.MILLISECONDS, TimeUnit.SECONDS) .update(duration, timeUnit); }
@Test public void testMetricsHelperRegistration() { listenerOneOkay = false; listenerTwoOkay = false; Map<String, String> configKeys = new HashMap<String, String>(); configKeys.put("pinot.broker.metrics.metricsRegistryRegistrationListeners", ListenerOne.class.getName() + "," + ListenerTwo.class.getName()); Configuration configuration = new MapConfiguration(configKeys); MetricsRegistry registry = new MetricsRegistry(); // Initialize the MetricsHelper and create a new timer MetricsHelper.initializeMetrics(configuration.subset("pinot.broker.metrics")); MetricsHelper.registerMetricsRegistry(registry); MetricsHelper.newTimer(registry, new MetricName(MetricsHelperTest.class, "dummy"), TimeUnit.MILLISECONDS, TimeUnit.MILLISECONDS); // Check that the two listeners fired assertTrue(listenerOneOkay); assertTrue(listenerTwoOkay); } }
void sendResponse(@Nonnull final byte[] result) { requestProcessingLatency.stop(); // Send Response final ByteBuf responseBuf = Unpooled.wrappedBuffer(result); final TimerContext responseSendLatency = MetricsHelper.startTimer(); ChannelFuture f = requestChannelHandlerContext.writeAndFlush(responseBuf); f.addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception { LOGGER.debug("Response has been sent !!"); responseSendLatency.stop(); _metric.addServingStats(requestSizeInBytes, result.length, 1L, false, requestProcessingLatency.getLatencyMs(), responseSendLatency.getLatencyMs()); long totalQueryTime = System.currentTimeMillis() - requestStartTime; if (totalQueryTime > _defaultLargeQueryLatencyMs) { LOGGER.info( "Slow query: request handler processing time: {}, send response latency: {}, total time to handle request: {}", requestProcessingLatency.getLatencyMs(), responseSendLatency.getLatencyMs(), totalQueryTime); } } }); // TODO: check if we can release this right after _handler.processRequest returns request.release(); }
private void makeGauge(final String gaugeName, final MetricName metricName, final GaugeFactory<?> gaugeFactory, final long value) { if (!_gaugeValues.containsKey(gaugeName)) { _gaugeValues.put(gaugeName, value); MetricsHelper.newGauge(_metricsRegistry, metricName, gaugeFactory.buildGauge(gaugeName)); _metricNames.add(metricName); } else { _gaugeValues.put(gaugeName, value); } }
/** * Initializes the metrics system by initializing the registry registration listeners present in the configuration. * * @param configuration The subset of the configuration containing the metrics-related keys */ public static void initializeMetrics(Configuration configuration) { synchronized (MetricsHelper.class) { String[] listenerClassNames = configuration.getStringArray("metricsRegistryRegistrationListeners"); if (listenerClassNames.length < 1) { listenerClassNames = new String[]{JmxReporterMetricsRegistryRegistrationListener.class.getName()}; } // Build each listener using their default constructor and add them for (String listenerClassName : listenerClassNames) { try { Class<? extends MetricsRegistryRegistrationListener> clazz = (Class<? extends MetricsRegistryRegistrationListener>) Class.forName(listenerClassName); Constructor<? extends MetricsRegistryRegistrationListener> defaultConstructor = clazz.getDeclaredConstructor(); MetricsRegistryRegistrationListener listener = defaultConstructor.newInstance(); addMetricsRegistryRegistrationListener(listener); } catch (Exception e) { LOGGER .warn("Caught exception while initializing MetricsRegistryRegistrationListener " + listenerClassName, e); } } } }
final TimerContext requestProcessingLatency = MetricsHelper.startTimer(); final ChannelHandlerContext requestChannelHandlerContext = ctx; ListenableFuture<byte[]> serializedQueryResponse = _handler.processRequest(ctx, request);
/** * Adds a new gauge whose values are retrieved from a callback function. * * @param metricName The name of the metric * @param valueCallback The callback function used to retrieve the value of the gauge */ public void addCallbackGauge(final String metricName, final Callable<Long> valueCallback) { MetricsHelper.newGauge(_metricsRegistry, new MetricName(_clazz, _metricPrefix + metricName), new com.yammer.metrics.core.Gauge<Long>() { @Override public Long value() { try { return valueCallback.call(); } catch (Exception e) { LOGGER.error("Caught exception", e); Utils.rethrowException(e); throw new AssertionError("Should not reach this"); } } }); }
public BrokerServerBuilder(Configuration config, RoutingTable routingTable, TimeBoundaryService timeBoundaryService, LiveInstancesChangeListenerImpl liveInstanceChangeListener, TableQueryQuotaManager tableQueryQuotaManager) { _state.set(State.INIT); _config = config; _delayedShutdownTimeMs = config.getLong(DELAY_SHUTDOWN_TIME_MS_CONFIG, DEFAULT_DELAY_SHUTDOWN_TIME_MS); _routingTable = routingTable; _timeBoundaryService = timeBoundaryService; _liveInstanceChangeListener = liveInstanceChangeListener; _tableQueryQuotaManager = tableQueryQuotaManager; _accessControlFactory = AccessControlFactory.loadFactory(_config.subset(ACCESS_CONTROL_PREFIX)); _metricsRegistry = new MetricsRegistry(); MetricsHelper.initializeMetrics(config.subset(METRICS_CONFIG_PREFIX)); MetricsHelper.registerMetricsRegistry(_metricsRegistry); _brokerMetrics = new BrokerMetrics(_metricsRegistry, !_config.getBoolean(TABLE_LEVEL_METRICS_CONFIG, true)); _brokerMetrics.initializeGlobalMeters(); _brokerRequestHandler = buildRequestHandler(); _brokerAdminApplication = new BrokerAdminApiApplication(this); }
checkTransition(State.CONNECTED); TimerContext t = MetricsHelper.startTimer(); ChannelFuture f = _bootstrap.connect(_server.getHostname(), _server.getPort()).sync();
MetricsHelper.initializeMetrics(_config); MetricsRegistry metricsRegistry = new MetricsRegistry(); MetricsHelper.registerMetricsRegistry(metricsRegistry); final MinionMetrics minionMetrics = new MinionMetrics(metricsRegistry); minionMetrics.initializeGlobalMeters();
_lastSendRequestLatency = MetricsHelper.startTimer(); _lastResponseLatency = MetricsHelper.startTimer();
MetricsHelper.initializeMetrics(_config.subset(METRICS_REGISTRY_NAME)); MetricsHelper.registerMetricsRegistry(_metricsRegistry);
tc = MetricsHelper.startTimer(); _beginFirstRequestTime = System.currentTimeMillis();