@Override public Boolean call(List<Sample> s) { int sz = s.size(); try (Context timerCtx = timer.time()) { repository.insert(s); return true; } finally { completions.mark(sz); } } };
@GET @Timed @Path("/{resource}") public Collection<Collection<SampleDTO>> getSamples(@PathParam("resource") Resource resource, @QueryParam("start") Optional<TimestampParam> start, @QueryParam("end") Optional<TimestampParam> end, @QueryParam("context") Optional<String> contextId) { Optional<Timestamp> lower = Transform.toTimestamp(start); Optional<Timestamp> upper = Transform.toTimestamp(end); Context context = contextId.isPresent() ? new Context(contextId.get()) : Context.DEFAULT_CONTEXT; return Transform.sampleDTOs(m_sampleRepository.select(context, resource, lower, upper)); }
@DELETE @Timed @Path("/{resource}") public void deleteSamples(@PathParam("resource") Resource resource, @QueryParam("context") Optional<String> contextId) { final Context context = contextId.isPresent() ? new Context(contextId.get()) : Context.DEFAULT_CONTEXT; m_sampleRepository.delete(context, resource); m_indexer.delete(context, resource); } }
@POST @Timed public Response writeSamples(Collection<SampleDTO> samples) { m_sampleRepository.insert(Transform.samples(samples)); return Response.status(Response.Status.CREATED).build(); }
@GET @Timed @Path("/{resource}") public Collection<Collection<SampleDTO>> getSamples(@PathParam("resource") Resource resource, @QueryParam("start") Optional<TimestampParam> start, @QueryParam("end") Optional<TimestampParam> end, @QueryParam("context") Optional<String> contextId) { Optional<Timestamp> lower = Transform.toTimestamp(start); Optional<Timestamp> upper = Transform.toTimestamp(end); Context context = contextId.isPresent() ? new Context(contextId.get()) : Context.DEFAULT_CONTEXT; return Transform.sampleDTOs(m_sampleRepository.select(context, resource, lower, upper)); }
@DELETE @Timed @Path("/{resource}") public void deleteSamples(@PathParam("resource") Resource resource, @QueryParam("context") Optional<String> contextId) { final Context context = contextId.isPresent() ? new Context(contextId.get()) : Context.DEFAULT_CONTEXT; m_sampleRepository.delete(context, resource); m_indexer.delete(context, resource); } }
@POST @Timed public Response writeSamples(Collection<SampleDTO> samples) { m_sampleRepository.insert(Transform.samples(samples)); return Response.status(Response.Status.CREATED).build(); }
/** Perform simple query; Establishes only that we can go to the database without excepting. */ @Override protected Result check() throws Exception { m_repository.select(Context.DEFAULT_CONTEXT, new Resource("notreal"), Optional.of(Timestamp.fromEpochMillis(0)), Optional.of(Timestamp.fromEpochMillis(0))); return Result.healthy(); }
@Override public void run() { Collection<Sample> samples; try { while (true) { if ((samples = m_queue.poll()) == null) { if (isShutdown()) { break; } else { Thread.sleep(250); continue; } } LOG.debug("Inserting {} samples", samples.size()); m_repository.insert(samples); } } catch (InterruptedException e) { LOG.warn("Interrupted!"); } }
/** Perform simple query; Establishes only that we can go to the database without excepting. */ @Override protected Result check() throws Exception { m_repository.select(Context.DEFAULT_CONTEXT, new Resource("notreal"), Optional.of(Timestamp.fromEpochMillis(0)), Optional.of(Timestamp.fromEpochMillis(0))); return Result.healthy(); }
@Override public void run() { String line; try { // Throw away the first (header). m_reader.readLine(); while ((line = m_reader.readLine()) != null) { try { List<Sample> samples = m_lineParser.parseLine(line); Context timerCtx = m_writeTimer.time(); try { m_repository.insert(samples); } finally { timerCtx.stop(); } m_numRows.inc(); m_numSamples.inc(10); } catch (ParseException e) { LOG.error("Unable to parse date from line '{}'", line); } } } catch (IOException e) { LOG.error("Error reading GSOD data file: {]", e); } }
@POST @Path("/{resource}") @Timed public Collection<Collection<MeasurementDTO>> getMeasurements( ResultDescriptorDTO descriptorDTO, @PathParam("resource") Resource resource, @QueryParam("start") Optional<TimestampParam> start, @QueryParam("end") Optional<TimestampParam> end, @QueryParam("resolution") Optional<DurationParam> resolution, @QueryParam("context") Optional<String> contextId) { Optional<Timestamp> lower = Transform.toTimestamp(start); Optional<Timestamp> upper = Transform.toTimestamp(end); Optional<Duration> step = Transform.toDuration(resolution); Context context = contextId.isPresent() ? new Context(contextId.get()) : Context.DEFAULT_CONTEXT; LOG.debug( "Retrieving measurements for resource {}, from {} to {} w/ resolution {} and w/ report {}", resource, lower, upper, step, descriptorDTO); ResultDescriptor rDescriptor = Transform.resultDescriptor(descriptorDTO); return Transform.measurementDTOs(m_repository.select(context, resource, lower, upper, rDescriptor, step)); }
@Override public void run() { List<Sample> samples = Lists.newArrayList(); for (String line : batch) { try { samples.add(parseSample(line)); } catch (Exception e) { m_parent.protocolErrorsInc(); } } try { m_repository.insert(samples); } catch (Exception e) { LOG.warn("Unable to commit batch of {} samples ({})", samples.size(), e.getMessage()); m_parent.storageErrorsInc(); } } });
@POST @Path("/{resource}") @Timed public Collection<Collection<MeasurementDTO>> getMeasurements( ResultDescriptorDTO descriptorDTO, @PathParam("resource") Resource resource, @QueryParam("start") Optional<TimestampParam> start, @QueryParam("end") Optional<TimestampParam> end, @QueryParam("resolution") Optional<DurationParam> resolution, @QueryParam("context") Optional<String> contextId) { Optional<Timestamp> lower = Transform.toTimestamp(start); Optional<Timestamp> upper = Transform.toTimestamp(end); Optional<Duration> step = Transform.toDuration(resolution); Context context = contextId.isPresent() ? new Context(contextId.get()) : Context.DEFAULT_CONTEXT; LOG.debug( "Retrieving measurements for resource {}, from {} to {} w/ resolution {} and w/ report {}", resource, lower, upper, step, descriptorDTO); ResultDescriptor rDescriptor = Transform.resultDescriptor(descriptorDTO); return Transform.measurementDTOs(m_repository.select(context, resource, lower, upper, rDescriptor, step)); }
@Override @SuppressWarnings("rawtypes") public void report(SortedMap<String, Gauge> gauges, SortedMap<String, Counter> counters, SortedMap<String, Histogram> histograms, SortedMap<String, Meter> meters, SortedMap<String, Timer> timers) { Timestamp timestamp = Timestamp.fromEpochMillis(clock.getTime()); List<Sample> samples = Lists.newArrayList(); for (Map.Entry<String, Gauge> entry : gauges.entrySet()) { reportGauge(samples, timestamp, entry.getKey(), entry.getValue()); } for (Map.Entry<String, Counter> entry : counters.entrySet()) { reportCounter(samples, timestamp, entry.getKey(), entry.getValue()); } for (Map.Entry<String, Histogram> entry : histograms.entrySet()) { reportHistogram(samples, timestamp, entry.getKey(), entry.getValue()); } for (Map.Entry<String, Meter> entry : meters.entrySet()) { reportMeter(samples, timestamp, entry.getKey(), entry.getValue()); } for (Map.Entry<String, Timer> entry : timers.entrySet()) { reportTimer(samples, timestamp, entry.getKey(), entry.getValue()); } this.repository.insert(samples); }
query.getResource(), query.getResolution()); Results<Measurement> results = m_repository.select( Context.DEFAULT_CONTEXT, query.getResource(),
private int go(String[] args) { m_parser.setUsageWidth(80); try { m_parser.parseArgument(args); } catch (CmdLineException e) { System.err.println(e.getMessage()); printUsage(System.err); return 1; } if (m_needsHelp) { printUsage(System.out); return 0; } if (m_resource == null || m_metric == null) { System.err.println("Missing required argument(s)"); printUsage(System.err); return 1; } System.out.printf("timestamp,%s%n", m_metric); for (Results.Row<Sample> row : m_repository.select(Context.DEFAULT_CONTEXT, m_resource, timestamp(m_start), timestamp(m_end))) { System.out.printf("%s,%.2f%n", row.getTimestamp().asDate(), row.getElement(m_metric).getValue().doubleValue()); } return 0; }
@Override @SuppressWarnings("rawtypes") public void report(SortedMap<String, Gauge> gauges, SortedMap<String, Counter> counters, SortedMap<String, Histogram> histograms, SortedMap<String, Meter> meters, SortedMap<String, Timer> timers) { Timestamp timestamp = Timestamp.fromEpochMillis(clock.getTime()); List<Sample> samples = Lists.newArrayList(); for (Map.Entry<String, Gauge> entry : gauges.entrySet()) { reportGauge(samples, timestamp, entry.getKey(), entry.getValue()); } for (Map.Entry<String, Counter> entry : counters.entrySet()) { reportCounter(samples, timestamp, entry.getKey(), entry.getValue()); } for (Map.Entry<String, Histogram> entry : histograms.entrySet()) { reportHistogram(samples, timestamp, entry.getKey(), entry.getValue()); } for (Map.Entry<String, Meter> entry : meters.entrySet()) { reportMeter(samples, timestamp, entry.getKey(), entry.getValue()); } for (Map.Entry<String, Timer> entry : timers.entrySet()) { reportTimer(samples, timestamp, entry.getKey(), entry.getValue()); } this.repository.insert(samples); }
@Override public Collection<Row<Measurement>> call() throws Exception { ResultDescriptor resultDescriptor = new ResultDescriptor(lag.getInterval()); for (Source source : listOfSources) { // Use the datasource as the metric name if set, otherwise use the name of the attribute final String metricName = source.getDataSource() != null ? source.getDataSource() : source.getAttribute(); final String name = source.getLabel(); final AggregationFunction fn = toAggregationFunction(source.getAggregation()); resultDescriptor.datasource(name, metricName, lag.getHeartbeat(), fn); resultDescriptor.export(name); } LOG.debug("Querying Newts for resource id {} with result descriptor: {}", newtsResourceId, resultDescriptor); Results<Measurement> results = m_sampleRepository.select(m_context, new Resource(newtsResourceId), start, end, resultDescriptor, Optional.of(Duration.millis(lag.getStep())), limitConcurrentAggregationsCallback); Collection<Row<Measurement>> rows = results.getRows(); LOG.debug("Found {} rows.", rows.size()); return rows; } };