1
0
mirror of https://github.com/open-telemetry/opentelemetry-go.git synced 2024-12-14 10:13:10 +02:00
Commit Graph

2063 Commits

Author SHA1 Message Date
Isobel Redelmeier
e4052cf674 Make sdk's Span#SetSpan thread-safe (#232)
[Closes #230]
2019-10-22 15:25:33 -07:00
rghetia
b04db14146
WIP: Named tracer prototype (#227)
* named tracer prototype

* rename Manager to Provider.

* fix compile error after merge.

* rename Tracer method to GetTracer

* provider with options.

* update test.

* cleanup make circl-ci

* remove global config.

* some cleanup.

* use provider for bridge

* update propagation test.

* update examples and plugins.

* remove GlobalTracer methods.

* fix review comments.

* some more cleanup.

* remove unnecessary getTracer call in benchmark test.
2019-10-22 13:19:11 -07:00
Gustavo Silva Paiva
9b5f5dd13a api(trace): change 'reference' to 'relation' (#225) 2019-10-21 10:15:49 -07:00
Joshua MacDonald
1191a07836
Observer metric has not been specified (#222) 2019-10-17 15:35:42 -07:00
Steven Karis
e11b90cab2 Implement W3C Correlation Context propagator (#179)
* Implement W3C Correlation Context propagator

* PR comments

* PR comments

* Update test to inject context properly

* Fix merge
2019-10-17 15:08:44 -07:00
Joshua MacDonald
0025ffcc71
Remove the experimental SDK (#221)
* Remove the experimental SDK

* Remove the experimental SDK from README.md

* Remove the experimental SDK from Makefile
2019-10-17 14:21:50 -07:00
Edward Muller
4172bdfbf9 Fix up docs and other othttp cleanups (#218) 2019-10-17 11:18:45 -07:00
Isobel Redelmeier
3a9c80c56f Provide conformance tests for tracers (#191)
* Provide conformance tests for tracers

The test harness may be used to ensure that a given tracer behaves
according to the expectations set by the API.

* Add `ToMatchError` matcher

* Use DeepEqual to compare unknown types in matchers

Unlike basic `==`/`!=`, `reflect.DeepEqual` can compare arbitrary
types (e.g., `[]string` to `[]string`)

* Use struct instead of string for test context key
2019-10-17 11:13:57 -07:00
Gustavo Silva Paiva
11bdacf7b9 exporter(jaeger): change jaeger process tags to core.KeyValue (#219) 2019-10-17 09:59:30 -07:00
Gustavo Silva Paiva
5e409de1aa change key to a string alias and KeyValue constructors (#217)
* change key to a string alias and KeyValue constructors

* fix int and uint tests
2019-10-16 22:49:58 -07:00
Liz Fong-Jones
75562dd381 add RegisterSimpleSpanProcessor() modeled on stackdriver code (#213)
* add RegisterSimpleSpanProcessor() modeled on stackdriver code

* update examples
2019-10-16 15:13:39 -07:00
Edward Muller
9f03360a84 Enable golint & gofmt, resolve issues (#214)
* Add golint to linters and resolve issues.

I decided to remove constructors for some of the propagation types
because the constructors can be reduced to either using the zero value
or a single, non optional member.

* Enable gofmt and commit fixes
2019-10-16 10:24:38 -07:00
Edward Muller
0fd077287b Bump golangci-lint to v1.21.0 (#215) 2019-10-16 10:05:15 -07:00
rghetia
7e5fc4e6aa
fix b3 propagation benchmark to include iterations. (#212)
also include byte allocation report.
 rename file to match http_trace_context propagator.
2019-10-15 13:12:56 -07:00
Krzesimir Nowak
388d3248fe Some metrics followup (#177)
* prevent passing observer descriptors to NewHandle

* add some test for metrics

* reword some docs
2019-10-15 09:28:36 -07:00
rghetia
e0eccc9a57
update the schedule. (#204) 2019-10-14 14:42:01 -07:00
Artem Kartasov
14c42168fc SDK: Add benchmark test for W3C TraceContext Inject/Extract (#194)
* SDK: Add benchmark test for W3C TraceContext Inject/Extract

* SDK: benchmark TraceContext: remove global tracer

* SDK: Add benchmarks for TraceContext: rename methods
2019-10-14 14:36:34 -07:00
Isobel Redelmeier
849cdc7630 Propagate FollowsFrom span relationships in SDK (#190)
[Closes #189]
2019-10-14 13:20:03 -07:00
Isobel Redelmeier
3516ebc456 Rename IsRecordingEvents and WithRecordEvents (#188)
Since these methods are about the span itself rather than specifically
*events* on the span, it makes sense to drop "events" from their names.

[Closes #33]
2019-10-10 18:07:35 -07:00
Alyson van Hardenberg
384b4bb86a rename tag package to distributedContext (#178)
* rename package tag to package distributedContext

* rename Tag -> Entry

* change distributed context -> dctx to avoid capitalization collision

* change dctx -> distributedcontext

* update stackdriver client example
2019-10-10 14:30:22 -07:00
Damien Mathieu
f863bfbd86 rename noop_meter.go to noop.go (#180)
The file defines noopMeter, noopHandler and noopLabelSet. Renaming it to
the more generic `noop.go` makes it clearer that several structs are
defined there.
2019-10-10 12:46:06 -07:00
Yoshi Yamaguchi
9ed97980e2 Add Stackdriver Trace exporter for trace. (#160)
* Add Stackdriver Trace exporter for trace.

TODOs for future work is:

* to replace bundler.Bundler

* to add proper tests for the exporter

* to move the exporter to proper repository once it will be created.

* Change to use functions for the exporter initialization instead of
passing option struct directly.
This fix is aliging the same fix for Jaeger (#146, #161)

* Change Option struct to be function type

* Change the original Option struct to be private

* Add line comments to maxMessageEventsPerSpan to leave it for future implementation

* Fix unnessesary expressions specified by `make precommit`

Left errors by `make precommit` in experimental/bridge/opentracing.

* Ran make precommit

* Add new line at EOF

* WIP: Start implementing BatchSpanExporter interfaces

* Change to use RegisterSpanProcessor to register bsp

* Change function names to fit current implementation of sdk

* Removed google.golang.org/api/support/bundler and implement ssp and bsp

* Change spanProcessor as a member of Exporter.

* Fix option names used for BatchSpanProcessor initialization.

* Change Exporter.Shutdown just to unregister spanProcessor.

* Removed copyright statements of OpenCensus.

* Fix small typo and EOF new line

* Fix interfaces of ExportSpan/ExportSpans to meet SpanSyncer/SpanBatcher

* Change to follow context.Context passed in ExportSpan/ExportSpans

* Fix Stackdriver Exporter to hold sync.Once to lock when it is registered and
unregistered.
2019-10-08 23:33:19 -07:00
Artem Kartasov
ffbef6a007 SDK: Multiple Unregister should not trigger multiple shutdown call (#176)
* SDK: Multiple Unregister should not trigger multiple shutdown call

* fix a data race: waitGroup.Add() should be outside of a goroutine
2019-10-08 23:31:29 -07:00
Joshua MacDonald
be8fb0b4e2 Golang metrics prototype (#100)
* initial metrics work

* rename cumulative to counter

* rename bidirectional to nonmonotonic

* rename unidirectional to monotonic

* rename nonnegative to signed

this changes the default semantics a bit - before the change measure
could record negative values by default, now it can't.

The specification draft currently specifies both NonNegative and
Signed, but I think it's a mistake.

* rename instrument to descriptor

* license

* rework measurement values

* make measurement value a tagged union

* simplify to one kind of metrics

* add observers

* change some interfaces to match the spec

* keep integral measurement separate from floating ones

* remove duplicated measurement type

* add checking for options

* reorder some fields and functions

* rename a function

to avoid confusion between the Handle type and the Measure type

* drop disabled field from descriptor

* add back typed API for metrics

* make metric options type safe

* merge alternatives into a single bool

* make value kind name less stuttery

* fix observation callback prototype

* drop context parameter from NewHandle

* drop useless parameter names

* make descriptor an opaque struct

* use a store helper

* handle comment fixes

* reword Alternate comment

* drop the "any value" metrics

* make measurement value simpler

* document value stuff

* add tests for values

* docs

* do not panic if there is no span ID in the event
2019-10-08 15:45:49 -07:00
Damien Mathieu
c2d5c66990 Export package (#162)
* setup sdk exporter package

* use sdk exporter package in sdk trace

* use sdk exporter package in all exporters

* empty the exporters list before testing Load

* move SpanData to the exporter package

* use the SpanProcessor registration, don't register exporters

* rename exporter structs to avoid stutter

* rename Syncer and Batcher to SpanSyncer and SpanBatcher

So it's explicit they are for spans, and we reduce the risk of name
conflict

* remove not moot todo

* rename sdk exporter to export

* only execute the SpanData if it is sampled
2019-10-08 11:56:58 -07:00
Artem Kartasov
93c667978d SDK: Add Shutdown test for Span Processor (#169)
* SDK: Add Shutdown test for Span Processor

* SDK: Shutdown test for Span Processor. Review fixes
2019-10-08 10:34:19 -07:00
rghetia
ef5d2cbb06
API: Add b3 propagator (#91)
* b3 propagator

* fix as per new api.

* add benchmark test.
2019-10-08 10:22:15 -07:00
Edward Muller
d351eb4de2 Http interceptors (#156)
* WIP

* Finish http middleware implementation

This is currently done as httptrace.NewHandler(). This should maybe
be moved to a different package or renamed, but atm this name
seemed the least objectionable to me.

There are a few TODOs sprinkled in the code for questions I didn't
know the answers to.

There is an example provided, which when copied to a main func
locally work against the jaeger all in one.

Real tests need to be added.

* Address feedback

* Tie in propagation, update attributes, more options, revise example, etc.

Dropped the httpConfig type because it seemed redundant an unecessary
abstraction.

* WithRouteTag

* address out of band feedback

* move to othttp package

* Add a very basic test.

I ended up needing to export the Traceparentheader const so that
it was accessible to this test.

* Add file header
2019-10-07 10:25:11 -07:00
Gustavo Silva Paiva
ab58cae33b export Links in Jaeger exporter. (#173) 2019-10-07 09:40:36 -07:00
Gustavo Silva Paiva
b1bb19aa80 change jaeger options to functional style (#161)
* change jaeger options to functional style

* fix lints

* add interface validaiton
2019-10-04 12:07:42 -07:00
Alyson van Hardenberg
bf2e5e9f09 update client and server example comments (#170) 2019-10-04 12:05:24 -07:00
Yoshi Yamaguchi
b5c984b839 Fix unnecessary type assertion in switch clause (#167) 2019-10-04 00:17:10 -07:00
Artem Kartasov
cd5ee69468 Named Tracer: temporary remove unnecessary tracer methods (#158) 2019-10-02 21:19:32 -07:00
rghetia
211007efb2
add binary propagation. (#155) 2019-10-02 13:54:39 -07:00
rghetia
7797bf9837
update README.md with quick start and release date. (#157) 2019-10-01 22:43:06 -07:00
rghetia
3d5b2fa328
Batched span processor (#154)
* add batch span processor.

* add blocking support.

* use With* function for options.
- also changed how Shutdown is handled.

* block Shutdown until queue is flushed.

* fix comment.
2019-10-01 13:50:51 -07:00
Krzesimir Nowak
a936b8fb00 Add some docs about useful step before filing a PR (#151)
* Add a document about contributing

It is shamelessly stolen from opentelemetry-python and edited to be
relevant to opentelemetry-go. This file should explain some less
obvious things about the development of the project, like running
linters and regenerating the files.

* Force the use of go modules

Until go 1.13 modules were disabled by default if the repository was
inside GOPATH. This was causing issues when running `make precommit`
for the first time, as it could not find sources for any of the tools
used in `make precommit` under `${GOPATH}/src`. With setting the
`GO111MODULE` environment variable to `on`, we tell `go` to behave
differently, just like go 1.13 does by default.
2019-10-01 09:16:45 -07:00
Steven Karis
fa7d053793 Add stdout trace exporter (#153)
* Add stdout trace exporter (#134)

* Update go.mod and go.sum

* Do not use assert in tests
2019-09-28 11:27:02 -07:00
Alyson van Hardenberg
0eb73325ce rename finish to end (#150)
* rename finish -> end

* missed a few finish -> end spots

* change end back to finish for the bridge span in the openTracing bridge

* fixed grammar, ran make
2019-09-27 10:48:10 -07:00
rghetia
e86b95c440
change TraceOptions to TraceFlags. (#144)
* change TraceOptions to TraceFlags.

* fix grammer in docs.
2019-09-25 14:37:36 -07:00
rghetia
a853377a2f
Update example to use jaeger exporter and update Readme (#143)
* update http example to use jaeger exporter and sdk.

* update image location.

* remove extra parameters for jaeger.
2019-09-25 13:22:33 -07:00
Krzesimir Nowak
7966e63342 More cleanups from #100 (#142)
* Drop dead event type

* Replace EventType from reader with one from exporter

* Do not concat the strings for string buffer

* Fill scope ID in events

That required renaming a variable, because it had the same name as the
type we wanted to assert later.

* Do not fail quietly when span context is busted
2019-09-25 10:30:02 -07:00
Krzesimir Nowak
908b73d792 run golangci-lint in all directories with go.mod (#138)
* Run golangci-lint in all directories with go.mod

* Imports fix by golangci-lint

* Propagate failures from commands running in loops
2019-09-25 09:38:55 -07:00
Krzesimir Nowak
339ca2d974 Initial opentracing bridge (#98)
* Allow specifying custom timestamps for events

Adding event with timestamp is not yet a part of the OpenTelemetry
specification, but this function will come in handy when implementing
the OpenTracing bridge.

* Add opentracing bridge, wrapper tracer and migration interfaces

There are some features missing - setting up links and span kind;
context propagation will only work between two OpenTracing bridges.

* Add some tests for the opentracing bridge

The tests mostly check various aspects of the cooperation between
OpenTracing and OpenTelemetry APIs.
2019-09-24 23:12:22 -07:00
stgrzeszczak
8af7978f42 Fix compilation with Golang 1.13 (#137)
* Fix compilation with Golang 1.13

* run go mod tidy again
2019-09-24 08:26:21 -07:00
Joshua MacDonald
a3ae50d8bc
Remove experimental/streaming globals, add streaming example (#135)
* Remove globals from exp/streaming

* basic example

* Build the streaming example

* Update README.md for running streaming example

* Remove observer package

* Move observer to exporter

* Fix

* Re-run make circle-ci
2019-09-23 14:39:10 -07:00
rghetia
83935b2558
Add propagator interface and W3C propagator (#85)
* add propagation api.

* add http propagator interface and w3c propagator implementation.

* remove Extract api from trace.

* remove Extract interface for tracer.

* fix copyright.

* fix variable names and comments.

* move inject/extract out of trace.

* replace INVALID_SPAN_CONTEXT with EmptySpanContext function.

* fix tag.Map.

* make carrier as interface instead of http.Request.

* rename structs and update doc comments..

* add doc.go

* update doc.

* add noop propagator.

* add new propagation api with Supplier interface.
- added Default Tracer which simply propagates SpanContext.
- added CopyOfRemote option to simply create remote span.

* remove old propagator.

* rename propagator to TextFormatPropagator.

* rename default tracer/span as pass_through tracer/span.

* add test for pass through tracer.

* add missing interface to pass through tracer.

* return SpanContext instead of contex.Context from Extract interface.
- also remove PassThroughTracer

* fix review comments.

* add more test cases for traceContext extraction.

* remove tidy temporarily from circle-ci target to avoid build failure.

* allow header ending in dash '-'.

* add inject test for non-zero value other than 01 for traceoption

* add AddLink and Link interface to MockSpan

* fix running go mod tidy on every build.
2019-09-23 11:51:32 -07:00
rghetia
b13362e37c
replace -printf option with -exec in find cmd for go.mod directories. (#139) 2019-09-23 11:04:55 -07:00
rghetia
c70cb29f22
add support for Link. (#80)
* add support for Link.

* add AddLink to mockSpan

* update api documentation.
2019-09-21 00:26:20 -07:00
rghetia
8af3bfcdc2
Use trace.SetCurrentSpan to store the span in the context in SDK. (#129) 2019-09-19 12:23:07 -07:00