Search in sources :

Example 26 with View

use of io.opencensus.stats.View in project instrumentation-java by census-instrumentation.

the class MeasureToViewMap method registerView.

/**
 * Enable stats collection for the given {@link View}.
 */
synchronized void registerView(View view, Clock clock) {
    exportedViews = null;
    View existing = registeredViews.get(view.getName());
    if (existing != null) {
        if (existing.equals(view)) {
            // Ignore views that are already registered.
            return;
        } else {
            throw new IllegalArgumentException("A different view with the same name is already registered: " + existing);
        }
    }
    Measure measure = view.getMeasure();
    Measure registeredMeasure = registeredMeasures.get(measure.getName());
    if (registeredMeasure != null && !registeredMeasure.equals(measure)) {
        throw new IllegalArgumentException("A different measure with the same name is already registered: " + registeredMeasure);
    }
    registeredViews.put(view.getName(), view);
    if (registeredMeasure == null) {
        registeredMeasures.put(measure.getName(), measure);
    }
    Timestamp now = clock.now();
    mutableMap.put(view.getMeasure().getName(), MutableViewData.create(view, now));
}
Also used : Measure(io.opencensus.stats.Measure) View(io.opencensus.stats.View) Timestamp(io.opencensus.common.Timestamp)

Example 27 with View

use of io.opencensus.stats.View in project instrumentation-java by census-instrumentation.

the class MetricUtils method viewToMetricDescriptor.

@javax.annotation.Nullable
static MetricDescriptor viewToMetricDescriptor(View view) {
    if (view.getWindow() instanceof View.AggregationWindow.Interval) {
        // Only creates Metric for cumulative stats.
        return null;
    }
    List<LabelKey> labelKeys = new ArrayList<LabelKey>();
    for (TagKey tagKey : view.getColumns()) {
        // TODO: add description
        labelKeys.add(LabelKey.create(tagKey.getName(), ""));
    }
    Measure measure = view.getMeasure();
    Aggregation aggregation = view.getAggregation();
    return MetricDescriptor.create(view.getName().asString(), view.getDescription(), getUnit(measure, aggregation), getType(measure, aggregation), labelKeys);
}
Also used : Aggregation(io.opencensus.stats.Aggregation) ArrayList(java.util.ArrayList) TagKey(io.opencensus.tags.TagKey) Measure(io.opencensus.stats.Measure) LabelKey(io.opencensus.metrics.LabelKey) View(io.opencensus.stats.View)

Example 28 with View

use of io.opencensus.stats.View in project instrumentation-java by census-instrumentation.

the class StatszZPageHandler method groupViewsByDirectoriesAndGetMeasures.

// Parses view names, creates a tree that represents the directory structure and put each view
// under appropriate directory. Also gets measures from the given views.
// Directories are the namespaces in view name, separated by '/'.
private static void groupViewsByDirectoriesAndGetMeasures(Set<View> views, TreeNode root, Map<String, Measure> measures, Set<View> cachedViews) {
    for (View view : views) {
        if (cachedViews.contains(view)) {
            continue;
        }
        cachedViews.add(view);
        List<String> dirs = PATH_SPLITTER.splitToList(view.getName().asString());
        TreeNode node = root;
        for (int i = 0; i < dirs.size(); i++) {
            if (node == null) {
                // Should never happen. Work around the nullness checker.
                break;
            }
            String dir = dirs.get(i);
            if ("".equals(dir) && i == 0) {
                // In case view name starts with a '/'.
                continue;
            }
            node.views++;
            if (i != dirs.size() - 1) {
                // Non-leaf node (directory node)
                node.children.putIfAbsent(dir, new TreeNode());
                node = node.children.get(dir);
            } else {
                // Leaf node (view node)
                node.children.putIfAbsent(dir, new TreeNode(view.getName()));
            }
        }
        Measure measure = view.getMeasure();
        measures.putIfAbsent(measure.getName(), measure);
    }
}
Also used : Measure(io.opencensus.stats.Measure) View(io.opencensus.stats.View)

Example 29 with View

use of io.opencensus.stats.View in project instrumentation-java by census-instrumentation.

the class StatszZPageHandler method emitViewData.

private static void emitViewData(/*@Nullable*/
ViewData viewData, View.Name viewName, PrintWriter out, Formatter formatter) {
    if (viewData == null) {
        formatter.format("<p class=\"view\">No Stats found for View %s.</p>", viewName.asString());
        return;
    }
    View view = viewData.getView();
    emitViewInfo(view, viewData.getWindowData(), out, formatter);
    formatter.format("<p class=\"view\">Stats for View: %s</p>", view.getName().asString());
    formatter.format("<table cellspacing=0 cellpadding=0>");
    emitViewDataTableHeader(view, out, formatter);
    for (Entry<List<TagValue>, AggregationData> /*@Nullable*/
    entry : viewData.getAggregationMap().entrySet()) {
        emitViewDataRow(view, entry, out, formatter);
    }
    out.write("</table>");
    out.write("<p></p>");
}
Also used : AggregationData(io.opencensus.stats.AggregationData) List(java.util.List) View(io.opencensus.stats.View)

Example 30 with View

use of io.opencensus.stats.View in project instrumentation-java by census-instrumentation.

the class Repl method registerAllViews.

private static void registerAllViews() {
    // Defining the distribution aggregations
    Aggregation latencyDistribution = Distribution.create(BucketBoundaries.create(Arrays.asList(// >=1s, >=2s, >=4s, >=6s]
    0.0, 25.0, 50.0, 75.0, 100.0, 200.0, 400.0, 600.0, 800.0, 1000.0, 2000.0, 4000.0, 6000.0)));
    Aggregation lengthsDistribution = Distribution.create(BucketBoundaries.create(Arrays.asList(// >=800B, >=1000B]
    0.0, 5.0, 10.0, 20.0, 40.0, 60.0, 80.0, 100.0, 200.0, 400.0, 600.0, 800.0, 1000.0)));
    // Define the count aggregation
    Aggregation countAggregation = Aggregation.Count.create();
    // So tagKeys
    List<TagKey> noKeys = new ArrayList<TagKey>();
    // Define the views
    View[] views = new View[] { View.create(Name.create("ocjavametrics/latency"), "The distribution of latencies", M_LATENCY_MS, latencyDistribution, Collections.singletonList(KEY_METHOD)), View.create(Name.create("ocjavametrics/lines_in"), "The number of lines read in from standard input", M_LINES_IN, countAggregation, noKeys), View.create(Name.create("ocjavametrics/errors"), "The number of errors encountered", M_ERRORS, countAggregation, Collections.singletonList(KEY_METHOD)), View.create(Name.create("ocjavametrics/line_lengths"), "The distribution of line lengths", M_LINE_LENGTHS, lengthsDistribution, noKeys) };
    // Create the view manager
    ViewManager vmgr = Stats.getViewManager();
    // Then finally register the views
    for (View view : views) {
        vmgr.registerView(view);
    }
}
Also used : Aggregation(io.opencensus.stats.Aggregation) TagKey(io.opencensus.tags.TagKey) ArrayList(java.util.ArrayList) ViewManager(io.opencensus.stats.ViewManager) View(io.opencensus.stats.View)

Aggregations

View (io.opencensus.stats.View)45 Test (org.junit.Test)31 ViewData (io.opencensus.stats.ViewData)18 StatsTestUtil.createEmptyViewData (io.opencensus.implcore.stats.StatsTestUtil.createEmptyViewData)15 SimpleTagContext (io.opencensus.implcore.stats.StatsTestUtil.SimpleTagContext)6 Aggregation (io.opencensus.stats.Aggregation)5 TagContext (io.opencensus.tags.TagContext)5 Timestamp (io.opencensus.common.Timestamp)3 AggregationData (io.opencensus.stats.AggregationData)3 Measure (io.opencensus.stats.Measure)3 MeasureMap (io.opencensus.stats.MeasureMap)3 TagKey (io.opencensus.tags.TagKey)3 TagValue (io.opencensus.tags.TagValue)3 ArrayList (java.util.ArrayList)3 List (java.util.List)3 CurrentState (io.opencensus.implcore.internal.CurrentState)2 DistributionData (io.opencensus.stats.AggregationData.DistributionData)2 MeasureDouble (io.opencensus.stats.Measure.MeasureDouble)2 ViewManager (io.opencensus.stats.ViewManager)2 ImmutableList (com.google.common.collect.ImmutableList)1