forked from open-telemetry/opentelemetry-demo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[email] document instrumentation (open-telemetry#388)
* email service doc details * add require statements
- Loading branch information
Showing
1 changed file
with
76 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
# email service | ||
|
||
This service will send a confirmation email to the user when an order is placed. | ||
|
||
[Email service source](../../src/emailservice/) | ||
|
||
## Initialize SDK | ||
|
||
You will need to require the core OpenTelemetry SDK and exporter Ruby gems, as | ||
well as any gem that will be needed for auto-instrumentation libraries | ||
(ie: Sinatra) | ||
|
||
```ruby | ||
require "opentelemetry/sdk" | ||
require "opentelemetry/exporter/otlp" | ||
require "opentelemetry/instrumentation/sinatra" | ||
``` | ||
|
||
The Ruby SDK uses OpenTelemetry standard environment variables to configure | ||
OTLP export, resource attributes, and service name automatically. When | ||
initializing the OpenTelemetry SDK, you will also specify which | ||
auto-instrumentation libraries to leverage (ie: Sinatra) | ||
|
||
```ruby | ||
OpenTelemetry::SDK.configure do |c| | ||
c.use "OpenTelemetry::Instrumentation::Sinatra" | ||
end | ||
``` | ||
|
||
## Traces | ||
|
||
### Add attributes to auto-instrumented spans | ||
|
||
Within the execution of auto-instrumented code you can get current span from | ||
context. | ||
|
||
```ruby | ||
current_span = OpenTelemetry::Trace.current_span | ||
``` | ||
|
||
Adding multiple attributes to a span is accomplished using `add_attributes` on | ||
the span object. | ||
|
||
```ruby | ||
current_span.add_attributes({ | ||
"app.order.id" => data.order.order_id, | ||
}) | ||
``` | ||
|
||
Adding only a single attribute can be accomplished using `set_attribute` on the | ||
span object. | ||
|
||
```ruby | ||
span.set_attribute("app.email.recipient", data.email) | ||
``` | ||
|
||
### Create new spans | ||
|
||
New spans can be created and placed into active context using `in_span` from an | ||
OpenTelemetry Tracer object. When used in conjunction with a `do..end` block, | ||
the span will automatically be ended when the block ends execution. | ||
|
||
```ruby | ||
tracer = OpenTelemetry.tracer_provider.tracer('emailservice') | ||
tracer.in_span("send_email") do |span| | ||
# logic in context of span here | ||
end | ||
``` | ||
|
||
## Metrics | ||
|
||
TBD | ||
|
||
## Logs | ||
|
||
TBD |