public static void main(String[] args) throws IOException, InterruptedException {
    // Register the view. It is imperative that this step exists,
    // otherwise recorded metrics will be dropped and never exported.
    View view =
        View.create(
            Name.create("task_latency_distribution"),
            "The distribution of the task latencies.",
            LATENCY_MS,
            Aggregation.Distribution.create(LATENCY_BOUNDARIES),
            Collections.<TagKey>emptyList());

    // Create the view manager
    ViewManager viewManager = Stats.getViewManager();

    // Then finally register the views
    viewManager.registerView(view);

    // [START setup_exporter]
    // Enable OpenCensus exporters to export metrics to Stackdriver Monitoring.
    // Exporters use Application Default Credentials to authenticate.
    // See https://developers.google.com/identity/protocols/application-default-credentials
    // for more details.
    StackdriverStatsExporter.createAndRegister();
    // [END setup_exporter]

    // Record 100 fake latency values between 0 and 5 seconds.
    Random rand = new Random();
    for (int i = 0; i < 100; i++) {
      long ms = (long) (TimeUnit.MILLISECONDS.convert(5, TimeUnit.SECONDS) * rand.nextDouble());
      System.out.println(String.format("Latency %d: %d", i, ms));
      STATS_RECORDER.newMeasureMap().put(LATENCY_MS, ms).record();
    }

    // The default export interval is 60 seconds. The thread with the StackdriverStatsExporter must
    // live for at least the interval past any metrics that must be collected, or some risk being
    // lost if they are recorded after the last export.

    System.out.println(
        String.format(
            "Sleeping %d seconds before shutdown to ensure all records are flushed.",
            EXPORT_INTERVAL));
    Thread.sleep(TimeUnit.MILLISECONDS.convert(EXPORT_INTERVAL, TimeUnit.SECONDS));
  }
public static void main ( String [ ] args ) throws IOException , InterruptedException { View view = View . create ( Name . create ( "task_latency_distribution" ) , "The distribution of the task latencies." , LATENCY_MS , Aggregation . Distribution . create ( LATENCY_BOUNDARIES ) , Collections . < TagKey > emptyList ( ) ) ; ViewManager viewManager = Stats . getViewManager ( ) ; viewManager . registerView ( view ) ; StackdriverStatsExporter . createAndRegister ( ) ; Random rand = new Random ( ) ; for ( int i = 0 ; i < 100 ; i ++ ) { long ms = ( long ) ( TimeUnit . MILLISECONDS . convert ( 5 , TimeUnit . SECONDS ) * rand . nextDouble ( ) ) ; System . out . println ( String . format ( "Latency %d: %d" , i , ms ) ) ; STATS_RECORDER . newMeasureMap ( ) . put ( LATENCY_MS , ms ) . record ( ) ; } System . out . println ( String . format ( "Sleeping %d seconds before shutdown to ensure all records are flushed." , EXPORT_INTERVAL ) ) ; Thread . sleep ( TimeUnit . MILLISECONDS . convert ( EXPORT_INTERVAL , TimeUnit . SECONDS ) ) ; }
Main launcher for the Stackdriver example.