blob: d05c02ec98a32675c3815ee35eec13ac02760140 [file] [log] [blame]
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/gc_cpu_fraction 42
// mayapp/process/gc_sys 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/last_gc_finished_timestamp 42
// mayapp/process/memory_alloc 42
// mayapp/process/memory_frees 42
// mayapp/process/memory_lookups 42
// mayapp/process/memory_malloc 42
// mayapp/process/next_gc_heap_size 42
// mayapp/process/num_forced_gc 42
// mayapp/process/num_gc 42
// mayapp/process/other_sys 42
// mayapp/process/pause_total 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
}