|
10 | 10 | require 'sinatra/base' |
11 | 11 | # Require otel-ruby |
12 | 12 | require 'opentelemetry/sdk' |
| 13 | +require 'opentelemetry/semconv/http' |
| 14 | +require 'opentelemetry/semconv/url' |
13 | 15 |
|
14 | 16 | # Export traces to console by default |
15 | 17 | ENV['OTEL_TRACES_EXPORTER'] ||= 'console' |
@@ -38,25 +40,25 @@ def call(env) |
38 | 40 | span_name = env['PATH_INFO'] |
39 | 41 |
|
40 | 42 | # For attribute naming, see |
41 | | - # https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/data-semantic-conventions.md#http-server |
| 43 | + # https://github.com/open-telemetry/semantic-conventions/blob/main/docs/http/http-spans.md#http-server |
42 | 44 |
|
43 | 45 | # Activate the extracted context |
44 | 46 | OpenTelemetry::Context.with_current(context) do |
45 | 47 | # Span kind MUST be `:server` for a HTTP server span |
46 | 48 | @tracer.in_span( |
47 | 49 | span_name, |
48 | 50 | attributes: { |
49 | | - 'component' => 'http', |
50 | | - 'http.method' => env['REQUEST_METHOD'], |
51 | | - 'http.route' => env['PATH_INFO'], |
52 | | - 'http.url' => env['REQUEST_URI'], |
| 51 | + OpenTelemetry::SemConv::URL::URL_SCHEME => 'http', |
| 52 | + OpenTelemetry::SemConv::HTTP::HTTP_REQUEST_METHOD => env['REQUEST_METHOD'], |
| 53 | + OpenTelemetry::SemConv::HTTP::HTTP_ROUTE => env['PATH_INFO'], |
| 54 | + OpenTelemetry::SemConv::URL::URL_PATH => env['REQUEST_URI'], |
53 | 55 | }, |
54 | 56 | kind: :server |
55 | 57 | ) do |span| |
56 | 58 | # Run application stack |
57 | 59 | status, headers, response_body = @app.call(env) |
58 | 60 |
|
59 | | - span.set_attribute('http.status_code', status) |
| 61 | + span.set_attribute(OpenTelemetry::SemConv::HTTP::HTTP_RESPONSE_STATUS_CODE, status) |
60 | 62 | end |
61 | 63 | end |
62 | 64 |
|
|
0 commit comments