private void updateMonitors() { parametrizedUriEmitter.forEachEmitter( (uri, emitter) -> { monitors.computeIfAbsent( uri, u -> { HttpPostEmitterMonitor monitor = new HttpPostEmitterMonitor( feed, emitter, ImmutableMap.of("uri", uri.toString()) ); monitor.start(); return monitor; } ); } ); }
public HttpPostEmitterMonitor( String feed, HttpPostEmitter httpPostEmitter, ImmutableMap<String, String> extraDimensions ) { super(feed); this.httpPostEmitter = httpPostEmitter; this.extraDimensions = extraDimensions; this.builder = builder(); }
@Override public boolean doMonitor(ServiceEmitter emitter) { updateMonitors(); monitors.values().forEach(m -> m.doMonitor(emitter)); return true; } }
@Override public boolean doMonitor(ServiceEmitter emitter) { emitEmittedEvents(emitter); emitDroppedBuffers(emitter); emitAllocatedBuffers(emitter); emitFailedBuffers(emitter); emitTimeCounterMetrics(emitter, httpPostEmitter.getBatchFillingTimeCounter(), "emitter/batchFilling/"); emitTimeCounterMetrics(emitter, httpPostEmitter.getSuccessfulSendingTimeCounter(), "emitter/successfulSending/"); emitTimeCounterMetrics(emitter, httpPostEmitter.getFailedSendingTimeCounter(), "emitter/failedSending/"); emitter.emit(builder.build("emitter/events/emitQueue", httpPostEmitter.getEventsToEmit())); emitter.emit(builder.build("emitter/events/large/emitQueue", httpPostEmitter.getLargeEventsToEmit())); emitter.emit(builder.build("emitter/buffers/emitQueue", httpPostEmitter.getBuffersToEmit())); emitter.emit(builder.build("emitter/buffers/reuseQueue", httpPostEmitter.getBuffersToReuse())); return true; }
@Inject public HttpEmittingMonitor(Emitter emitter) { if (emitter instanceof HttpPostEmitter) { delegate = new HttpPostEmitterMonitor( FeedDefiningMonitor.DEFAULT_METRICS_FEED, (HttpPostEmitter) emitter, ImmutableMap.of() ); } else if (emitter instanceof ParametrizedUriEmitter) { delegate = new ParametrizedUriEmitterMonitor( FeedDefiningMonitor.DEFAULT_METRICS_FEED, (ParametrizedUriEmitter) emitter ); } else { throw new IllegalStateException( "Unable to use HttpEmittingMonitor with emitter other than HttpPostEmitter or ParametrizedUriEmitter, " + emitter.getClass() + " is used" ); } }
@Override public boolean doMonitor(ServiceEmitter emitter) { long newTotalEmittedEvents = httpPostEmitter.getTotalEmittedEvents(); long totalEmittedEventsDiff = newTotalEmittedEvents - lastTotalEmittedEvents; emitter.emit(builder.build("emitter/events/emitted", totalEmittedEventsDiff)); lastTotalEmittedEvents = newTotalEmittedEvents; int newDroppedBuffers = httpPostEmitter.getDroppedBuffers(); int droppedBuffersDiff = newDroppedBuffers - lastDroppedBuffers; emitter.emit(builder.build("emitter/buffers/dropped", droppedBuffersDiff)); lastDroppedBuffers = newDroppedBuffers; emitTimeCounterMetrics(emitter, httpPostEmitter.getBatchFillingTimeCounter(), "emitter/batchFilling/"); emitTimeCounterMetrics(emitter, httpPostEmitter.getSuccessfulSendingTimeCounter(), "emitter/successfulSending/"); emitTimeCounterMetrics(emitter, httpPostEmitter.getFailedSendingTimeCounter(), "emitter/failedSending/"); emitter.emit(builder.build("emitter/events/emitQueue", httpPostEmitter.getEventsToEmit())); emitter.emit(builder.build("emitter/events/large/emitQueue", httpPostEmitter.getLargeEventsToEmit())); emitter.emit(builder.build("emitter/buffers/totalAllocated", httpPostEmitter.getTotalAllocatedBuffers())); emitter.emit(builder.build("emitter/buffers/emitQueue", httpPostEmitter.getBuffersToEmit())); emitter.emit(builder.build("emitter/buffers/failed", httpPostEmitter.getFailedBuffers())); emitter.emit(builder.build("emitter/buffers/reuseQueue", httpPostEmitter.getBuffersToReuse())); return true; }
@Inject public HttpEmittingMonitor(Emitter emitter) { if (emitter instanceof HttpPostEmitter) { delegate = new HttpPostEmitterMonitor( FeedDefiningMonitor.DEFAULT_METRICS_FEED, (HttpPostEmitter) emitter, ImmutableMap.of() ); } else if (emitter instanceof ParametrizedUriEmitter) { delegate = new ParametrizedUriEmitterMonitor( FeedDefiningMonitor.DEFAULT_METRICS_FEED, (ParametrizedUriEmitter) emitter ); } else { throw new IllegalStateException( "Unable to use HttpEmittingMonitor with emitter other than HttpPostEmitter or ParametrizedUriEmitter, " + emitter.getClass() + " is used" ); } }
private void updateMonitors() { parametrizedUriEmitter.forEachEmitter( (uri, emitter) -> { monitors.computeIfAbsent( uri, u -> { HttpPostEmitterMonitor monitor = new HttpPostEmitterMonitor( feed, emitter, ImmutableMap.of("uri", uri.toString()) ); monitor.start(); return monitor; } ); } ); }
public HttpPostEmitterMonitor( String feed, HttpPostEmitter httpPostEmitter, ImmutableMap<String, String> extraDimensions ) { super(feed); this.httpPostEmitter = httpPostEmitter; this.extraDimensions = extraDimensions; this.builder = builder(); }
@Override public boolean doMonitor(ServiceEmitter emitter) { updateMonitors(); monitors.values().forEach(m -> m.doMonitor(emitter)); return true; } }