@Override public void add(MetricValues metricValues) { add(ImmutableList.of(metricValues)); }
@Override public void delete(MetricDeleteQuery query) { cube.get().delete(buildCubeDeleteQuery(query)); }
@Override public Collection<String> findMetricNames(MetricSearchQuery query) { return cube.get().findMeasureNames(buildCubeSearchQuery(query)); }
@Override public void deleteAll() { // this will delete all aggregates metrics data delete(new MetricDeleteQuery(0, System.currentTimeMillis() / 1000, Collections.emptySet(), Collections.emptyMap(), Collections.emptyList())); // this will delete all timeseries data deleteBefore(System.currentTimeMillis() / 1000); }
@Override public void deleteBefore(long timestamp) { for (int resolution : resolutionTTLMap.keySet()) { // Delete all data before the timestamp. null for MeasureName indicates match any MeasureName. deleteMetricsBeforeTimestamp(timestamp, resolution); } }
@Override public Collection<MetricTimeSeries> query(MetricDataQuery query) { Collection<TimeSeries> cubeResult = cube.get().query(buildCubeQuery(query)); List<MetricTimeSeries> result = Lists.newArrayList(); for (TimeSeries timeSeries : cubeResult) { result.add(new MetricTimeSeries(timeSeries.getMeasureName(), timeSeries.getDimensionValues(), timeSeries.getTimeValues())); } return result; }
private CubeExploreQuery buildCubeSearchQuery(MetricSearchQuery query) { return new CubeExploreQuery(query.getStartTs(), query.getEndTs(), query.getResolution(), query.getLimit(), toTagValues(query.getTagValues())); }
private CubeQuery buildCubeQuery(MetricDataQuery query) { String aggregation = getAggregation(query); return new CubeQuery(aggregation, query.getStartTs(), query.getEndTs(), query.getResolution(), query.getLimit(), query.getMetrics(), query.getSliceByTags(), query.getGroupByTags(), query.getInterpolator()); }
@Override public void deleteAll() { // this will delete all aggregates metrics data delete(new MetricDeleteQuery(0, System.currentTimeMillis() / 1000, Collections.emptySet(), Collections.emptyMap(), Collections.emptyList())); // this will delete all timeseries data deleteBefore(System.currentTimeMillis() / 1000); }
@Override public void deleteBefore(long timestamp) { for (int resolution : resolutionTTLMap.keySet()) { // Delete all data before the timestamp. null for MeasureName indicates match any MeasureName. deleteMetricsBeforeTimestamp(timestamp, resolution); } }
@Override public Collection<MetricTimeSeries> query(MetricDataQuery query) { Collection<TimeSeries> cubeResult = cube.get().query(buildCubeQuery(query)); List<MetricTimeSeries> result = Lists.newArrayList(); for (TimeSeries timeSeries : cubeResult) { result.add(new MetricTimeSeries(timeSeries.getMeasureName(), timeSeries.getDimensionValues(), timeSeries.getTimeValues())); } return result; }
private CubeExploreQuery buildCubeSearchQuery(MetricSearchQuery query) { return new CubeExploreQuery(query.getStartTs(), query.getEndTs(), query.getResolution(), query.getLimit(), toTagValues(query.getTagValues())); }
@Override public void deleteTTLExpired() { long currentTime = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()); for (Map.Entry<Integer, Long> resolutionTTL : resolutionTTLMap.entrySet()) { deleteMetricsBeforeTimestamp(currentTime - resolutionTTL.getValue(), resolutionTTL.getKey()); } }
@Override public Collection<String> findMetricNames(MetricSearchQuery query) { return cube.get().findMeasureNames(buildCubeSearchQuery(query)); }
@Override public void add(MetricValues metricValues) { add(ImmutableList.of(metricValues)); }
@Override public void delete(MetricDeleteQuery query) { cube.get().delete(buildCubeDeleteQuery(query)); }
@Override public void deleteTTLExpired() { long currentTime = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()); for (Map.Entry<Integer, Long> resolutionTTL : resolutionTTLMap.entrySet()) { deleteMetricsBeforeTimestamp(currentTime - resolutionTTL.getValue(), resolutionTTL.getKey()); } }
@Override public Collection<TagValue> findNextAvailableTags(MetricSearchQuery query) { Collection<DimensionValue> tags = cube.get().findDimensionValues(buildCubeSearchQuery(query)); Collection<TagValue> result = Lists.newArrayList(); for (DimensionValue dimensionValue : tags) { result.add(new TagValue(dimensionValue.getName(), dimensionValue.getValue())); } return result; }
@Override public Collection<TagValue> findNextAvailableTags(MetricSearchQuery query) { Collection<DimensionValue> tags = cube.get().findDimensionValues(buildCubeSearchQuery(query)); Collection<TagValue> result = Lists.newArrayList(); for (DimensionValue dimensionValue : tags) { result.add(new TagValue(dimensionValue.getName(), dimensionValue.getValue())); } return result; }