package runmetrics_test import ( "context" "fmt" "log" "sort" "go.opencensus.io/metric/metricdata" "go.opencensus.io/metric/metricexport" "go.opencensus.io/plugin/runmetrics" ) type printExporter struct { } func (l *printExporter) ExportMetrics(ctx context.Context, data []*metricdata.Metric) error { mapData := make(map[string]metricdata.Metric, 0) for _, v := range data { mapData[v.Descriptor.Name] = *v } mapKeys := make([]string, 0, len(mapData)) for key := range mapData { mapKeys = append(mapKeys, key) } sort.Strings(mapKeys) // for the sake of a simple example, we cannot use the real value here simpleVal := func(v interface{}) int { return 42 } for _, k := range mapKeys { v := mapData[k] fmt.Printf("%s %d\n", k, simpleVal(v.TimeSeries[0].Points[0].Value)) } return nil } func ExampleEnable() { // Enable collection of runtime metrics and supply options err := runmetrics.Enable(runmetrics.RunMetricOptions{ EnableCPU: true, EnableMemory: true, Prefix: "mayapp/", }) if err != nil { log.Fatal(err) } // Use your reader/exporter to extract values // This part is not specific to runtime metrics and only here to make it a complete example. metricexport.NewReader().ReadAndExport(&printExporter{}) // output: // mayapp/process/cpu_cgo_calls 42 // mayapp/process/cpu_goroutines 42 // mayapp/process/heap_alloc 42 // mayapp/process/heap_idle 42 // mayapp/process/heap_inuse 42 // mayapp/process/heap_objects 42 // mayapp/process/heap_release 42 // mayapp/process/memory_alloc 42 // mayapp/process/memory_frees 42 // mayapp/process/memory_lookups 42 // mayapp/process/memory_malloc 42 // mayapp/process/stack_inuse 42 // mayapp/process/stack_mcache_inuse 42 // mayapp/process/stack_mspan_inuse 42 // mayapp/process/sys_heap 42 // mayapp/process/sys_memory_alloc 42 // mayapp/process/sys_stack 42 // mayapp/process/sys_stack_mcache 42 // mayapp/process/sys_stack_mspan 42 // mayapp/process/total_memory_alloc 42 }