Documentation ¶
Overview ¶
Package tag contains OpenCensus tags.
Tags are key-value pairs. Tags provide additional cardinality to the OpenCensus instrumentation data.
Tags can be propagated on the wire and in the same process via context.Context. Encode and Decode should be used to represent tags into their binary propagation form.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Do ¶ added in v0.2.0
Do is similar to pprof.Do: a convenience for installing the tags from the context as Go profiler labels. This allows you to correlated runtime profiling with stats.
It converts the key/values from the given map to Go profiler labels and calls pprof.Do.
Do is going to do nothing if your Go version is below 1.9.
Example ¶
package main import ( "context" "log" "go.opencensus.io/tag" ) var ( ctx context.Context key tag.Key ) func main() { tagMap, err := tag.NewMap(ctx, tag.Insert(key, "macOS-10.12.5"), tag.Upsert(key, "macOS-10.12.7"), ) if err != nil { log.Fatal(err) } ctx = tag.NewContext(ctx, tagMap) tag.Do(ctx, func(ctx context.Context) { _ = ctx // use context }) }
Output:
func Encode ¶
Encode encodes the tag map into a []byte. It is useful to propagate the tag maps on wire in binary format.
func NewContext ¶
NewContext creates a new context with the given tag map. To propagate a tag map to downstream methods and downstream RPCs, add a tag map to the current context. NewContext will return a copy of the current context, and put the tag map into the returned one. If there is already a tag map in the current context, it will be replaced with m.
Example ¶
package main import ( "context" "go.opencensus.io/tag" ) var tagMap *tag.Map func main() { // Propagate the tag map in the current context. ctx := tag.NewContext(context.Background(), tagMap) _ = ctx // use context }
Output:
Types ¶
type Key ¶
type Key struct {
// contains filtered or unexported fields
}
Key represents a tag key.
func NewKey ¶
NewKey creates or retrieves a string key identified by name. Calling NewKey consequently with the same name returns the same key.
Example ¶
package main import ( "log" "go.opencensus.io/tag" ) func main() { // Get a key to represent user OS. key, err := tag.NewKey("my.org/keys/user-os") if err != nil { log.Fatal(err) } _ = key // use key }
Output:
type Map ¶
type Map struct {
// contains filtered or unexported fields
}
Map is a map of tags. Use NewMap to build tag maps.
func FromContext ¶
FromContext returns the tag map stored in the context.
Example ¶
package main import ( "context" "go.opencensus.io/tag" ) var ctx context.Context func main() { tagMap := tag.FromContext(ctx) _ = tagMap // use the tag map }
Output:
func NewMap ¶
NewMap returns a new tag map originated from the incoming context and modified with the provided mutators.
Example ¶
package main import ( "context" "log" "go.opencensus.io/tag" ) var ctx context.Context func main() { osKey, err := tag.NewKey("my.org/keys/user-os") if err != nil { log.Fatal(err) } userIDKey, err := tag.NewKey("my.org/keys/user-id") if err != nil { log.Fatal(err) } tagMap, err := tag.NewMap(ctx, tag.Insert(osKey, "macOS-10.12.5"), tag.Upsert(userIDKey, "cde36753ed"), ) if err != nil { log.Fatal(err) } _ = tagMap // use the tag map }
Output:
Example (Replace) ¶
package main import ( "context" "log" "go.opencensus.io/tag" ) var ( ctx context.Context key tag.Key ) func main() { tagMap, err := tag.NewMap(ctx, tag.Insert(key, "macOS-10.12.5"), tag.Upsert(key, "macOS-10.12.7"), ) if err != nil { log.Fatal(err) } ctx = tag.NewContext(ctx, tagMap) _ = ctx // use context }
Output:
type Mutator ¶
Mutator modifies a tag map.
func Insert ¶
Insert returns a mutator that inserts a value associated with k. If k already exists in the tag map, mutator doesn't update the value.