public static PipeMonitorCollectorStage attach(GraphManager gm) { return attach(gm,defaultMonitorRate,defaultMonitorRingConfig); }
@Override public void run() { int j = batchSize; //max to check before returning thread. int pos = position; while (--j>=0) { if (--pos<0) { pos = inputs.length-1; } //can pass in null for local hists when not gatering history consumeSamples(pos, inputs, pctFull, messagesPerSecond); } position = pos; }
/** * * @param graphManager * @param inputs _in_ Pipes to be monitored. */ private PipeMonitorCollectorStage(GraphManager graphManager, Pipe<PipeMonitorSchema> ... inputs) { super(graphManager, inputs, NONE); this.inputs = inputs; this.graphManager = graphManager; this.batchSize = inputs.length>=64?64:inputs.length; validateSchema(inputs); GraphManager.addNota(graphManager, GraphManager.MONITOR, GraphManager.MONITOR, this); }
@Override protected boolean payload(AppendableByteWriter<?> payload, GraphManager gm, ChannelReader params, HTTPVerbDefaults verb) { //logger.info("begin building requested graph"); monitor.writeAsDot(gm, graphName, payload); //logger.info("finished requested dot"); return true;//return false if we are not able to write it all... }
@Override protected boolean payload(AppendableByteWriter<?> payload, GraphManager gm, ChannelReader params, HTTPVerbDefaults verb) { //logger.info("begin building requested graph"); //NOTE: this class is exactly the same as DotModuleStage except for this line. monitor.writeAsSummary(gm, payload); //logger.info("finished requested dot"); return true; }
/** * Easy entry point for adding monitoring to the graph. This should be copied by all the other monitor consumers. TODO: build for JMX, SLF4J, Socket.io * @param gm * @param monitorRate * @param ringBufferMonitorConfig */ public static PipeMonitorCollectorStage attach(GraphManager gm, Long monitorRate, PipeConfig<PipeMonitorSchema> ringBufferMonitorConfig) { PipeMonitorCollectorStage stage = new PipeMonitorCollectorStage(gm, GraphManager.attachMonitorsToGraph(gm, monitorRate, ringBufferMonitorConfig)); GraphManager.addNota(gm, GraphManager.SCHEDULE_RATE, monitorRate>>5, stage); GraphManager.addNota(gm, GraphManager.MONITOR, "dummy", stage); return stage; }
/** * If feature was enabled by setting telemetry port to zero this method uses logging to write out the dot data. * @param gm */ public static void logTelemetrySnapshot(GraphManager gm) { if (null!=gm.telemetryBuffer) { gm.telemetryBuffer.clear(); gm.telemetryTimestamp.write(System.currentTimeMillis(), gm.telemetryBuffer); gm.telemetryBuffer.append(".dot\n\n"); gm.telemetryMonitor.writeAsDot(gm, "gl", gm.telemetryBuffer); logger.info("\nTelemetry:{}\n\n", gm.telemetryBuffer .toString().replaceAll("µs", "micro")); //UTF8 support offten missing from log subsystem } else { if (gm.telemetryPort<0) { logger.warn("requested telemetry snapshot but this feature is not enabled, turn on telemetry with port set to zero"); } } }
public static PipeMonitorCollectorStage attach(GraphManager gm, long rate) { return attach(gm,Long.valueOf(rate),defaultMonitorRingConfig); }
public static SummaryModuleStage<?, ?, ?, ?> newInstance(GraphManager graphManager, Pipe<HTTPRequestSchema> input, Pipe<ServerResponseSchema> output, HTTPSpecification<?, ?, ?, ?> httpSpec) { PipeMonitorCollectorStage monitor = PipeMonitorCollectorStage.attach(graphManager); return new SummaryModuleStage(graphManager, new Pipe[]{input}, new Pipe[]{output}, httpSpec, monitor); }
public static DotModuleStage<?, ?, ?, ?> newInstance(GraphManager graphManager, Pipe<HTTPRequestSchema> input, Pipe<ServerResponseSchema> output, HTTPSpecification<?, ?, ?, ?> httpSpec) { PipeMonitorCollectorStage monitor = PipeMonitorCollectorStage.attach(graphManager); return new DotModuleStage(graphManager, new Pipe[]{input}, new Pipe[]{output}, httpSpec, monitor); }
PipeMonitorCollectorStage.attach(gm);
PipeMonitorCollectorStage.attach(gm);
recordElapsedTime = true; //Required to see CPU allocation. gm.telemetryMonitor = PipeMonitorCollectorStage.attach(gm); gm.telemetryTimestamp = new ISOTimeFormatterLowGC(true); gm.telemetryBuffer = new AppendableBuilder();
PipeMonitorCollectorStage.attach(gm);
PipeMonitorCollectorStage.attach(gm);
PipeMonitorCollectorStage monitor = PipeMonitorCollectorStage.attach(gm);//TODO: only gets triggered on shutdown call, TODO: need to fix this. final ThreadPerStageScheduler scheduler = new ThreadPerStageScheduler(gm); scheduler.playNice = false; //this may or may not help
PipeMonitorCollectorStage monitor = PipeMonitorCollectorStage.attach(gm);//TODO: only gets triggered on shutdown call, TODO: need to fix this. final ThreadPerStageScheduler scheduler = new ThreadPerStageScheduler(gm); scheduler.playNice = false; //this may or may not help
PipeMonitorCollectorStage.attach(gm);
PipeMonitorCollectorStage.attach(gm);