Skip to content
Open
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions opencensus/OpenCensus-Traces.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# OpenCensus Trace Exporters

## Exporting Spans

Each span received by the OpenCensus Exporter must be transformed into a New Relic span before being sent.

|NR Span Field|OpenCensus Span Field|Type|Required|Comments|
|-----|-----|-----|-----|-----|
|`id`|`Span.SpanID`|string|yes|Unique identifier for this span|
|`trace.id`|`Span.SpanContext.TraceID`|string|yes|Unique identifier shared by all spans within a single trace|
|`name`|`Span.Name`|string|yes|The name of this span|
|`parent.id`|`Span.ParentSpanID`|string|yes (except root span)|The span id of the previous caller of this span. Can be empty if this is the first span in which case the key should be omitted.|
|`timestamp`|`Span.StartTime`|long|yes|Epoch ms timestamp|
|`duration.ms`|`Span.EndTime` - `Span.StartTime`|float|yes|Duration of this span in milliseconds|
|`service.name`|(none)|string|yes| The name of the service that created this span. This value is not gathered from OpenCensus. Instead it should be set directly by the user when defining the Exporter.|
Comment on lines +12 to +15
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

name, parent.id, duration.ms and service.name are all in the attributes rather than the top level. Should that be called out in here?

|`attributes`|`Span.Attributes`|map|no|Map of user specified "tags" on this span. Keys are strings, values can be any of bool, long, float, or string. Key should be omitted if empty.|
|`attributes.error`|`Span.Status.Code` not in `IgnoreStatusCodes` list and is not 0|bool|no|When `Span.Stats.Code` is not `0` and is not in the `IgnoreStatusCodes` list, include the value `"error": true` in the `tags` map. If an `error` tag was already set by the user, do not override it.|
Copy link
Contributor

@jkwatson jkwatson Sep 30, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we have access to an status message? If so, we should also populate error.message here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh great idea! We didn't do this in our version of the Go OpenCensus exporter but it's a great idea. I'll add it!

Since the Status isn't always an error (say the code is 0) then maybe we shouldn't use the word "error". How about three attributes (all under the attributes map) error (bool), status.code (int), and status.message (string)?


## Configuration

When creating their Exporter, users must be able to configure them. The following items must be configurable:

|Configuration|Type|Comments|
|-----|-----|-----|
|`APIKey`|string|The API used to send spans to New Relic|
|`EntityName`|string|The name of this entity or application|
|`IgnoreStatusCodes`|list of int|When a span's status code is in this list, the span will not be recorded as an error. The value 0, while not in this list, will also never be considered an error.|