open telemetry instrumentation for the `remix` package
npm install opentelemetry-instrumentation-remixThis module provides automatic instrumentation for remix.
```
npm install --save opentelemetry-instrumentation-remix
$3
This instrumentation does NOT support Cloudflare Workers. For more details follow opentelemetry-js issue #1214.Usage
For further automatic instrumentation instruction see the @opentelemetry/instrumentation package.`js
const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node');
const { registerInstrumentations } = require('@opentelemetry/instrumentation');
const { RemixInstrumentation } = require('opentelemetry-instrumentation-remix');const tracerProvider = new NodeTracerProvider();
tracerProvider.register();
registerInstrumentations({
instrumentations: [
new RemixInstrumentation()
]
});
`
Configuration
| Name | Type | Default Value | Description |
|--------------------------|----------------------------------------------------|-----------------------------|---------------------------------------------------------------------------------------------|
| actionFormDataAttributes | Record |
{ _action: "actionType" } | Mapping of FormData field to span attribute names. |
| legacyErrorAttributes | boolean | false | Whether to emit errors in the form of span attributes, as well as in span exception events. |Instrumentation
$3
Emitted for every request into remix server.| Operation | Example | Notes |
|-----------------------------|--------------------------------|-------------------------------------------------------------------------------------|
|
remix.request [routePath] | remix.request /jokes/:jokeId | If the request does not match a route, the name of the span will be remix.request |
| Attribute | Description | Example Value |
|------------------------|------------------------------------------------------------------------|--------------------------------------------------------------|
|
code.function | Name of executed function | "requestHandler" |
| http.method | HTTP method | "POST" |
| http.url | HTTP URL | "https://remix.jokes/jokes/new?_data=routes%2Fjokes%2Fnew" |
| http.route | HTTP route path, added if the request matches a route | "/jokes/:jokeId" |
| http.status_code | Response status code | 200 |
| match.route.id | Remix matched route ID, added if the request matches a route | "routes/jokes/$jokeId" |
| error | Added if error detected and if legacyErrorAttributes enabled | true |
| exception.message | Error message, if legacyErrorAttributes enabled and if applicable | "Kaboom!" |
| exception.stacktrace | Error stacktrace, if legacyErrorAttributes enabled and if applicable | [stacktrace] || Status Code | Description |
|------------------------|--------------------------------------------|
|
SpanStatusCode.ERROR | When an exception occurs during evaluation || Event | Attributes | Description |
|-----------|------------------------|---------------------------------|
| Exception |
exception.message | Error message, if applicable |
| | exception.stacktrace | Error stacktrace, if applicable |$3
Emitted for every loader called.| Operation | Example |
|--------------------|-------------------------------|
|
LOADER [routeId] | LOADER routes/jokes/$jokeId || Attribute | Description | Example Value |
|----------------------------|------------------------------------------------------------------------|----------------------------------------------------------------|
|
code.function | Name of executed function | "loader" |
| http.method | HTTP method | "POST" |
| http.url | HTTP URL | "https://remix.jokes/jokes/new?_data=routes%2Fjokes%2Fnew" |
| http.status_code | Response status code | 200 |
| match.route.id | Remix matched route id | "routes/jokes/$jokeId" |
| match.params.[paramName] | Value for each remix matched param | [match.params.jokeId]: 23fc7bcf-2d35-4c70-877f-338eca1fd3ef" |
| error | Added if error detected and if legacyErrorAttributes enabled | true |
| exception.message | Error message, if legacyErrorAttributes enabled and if applicable | "Kaboom!" |
| exception.stacktrace | Error stacktrace, if legacyErrorAttributes enabled and if applicable | [stacktrace] || Status Code | Description |
|------------------------|--------------------------------------------|
|
SpanStatusCode.ERROR | When an exception occurs during evaluation || Event | Attributes | Description |
|-----------|------------------------|---------------------------------|
| Exception |
exception.message | Error message, if applicable |
| | exception.stacktrace | Error stacktrace, if applicable |$3
Emitted for every action called.| Operation | Example |
|--------------------|---------------------------|
|
ACTION [routeId] | ACTION routes/jokes/new || Attribute | Description | Example Value |
|----------------------------|------------------------------------------------------------------------|-----------------------------------------------------------------|
|
code.function | Name of executed function | "action" |
| http.method | HTTP method | "POST" |
| http.url | HTTP URL | "https://remix.jokes/jokes/new?_data=routes%2Fjokes%2Fnew" |
| http.status_code | Response status code | 200 |
| match.route.id | Remix matched route id | "routes/jokes/$jokeId" |
| match.params.[paramName] | Value for each remix matched param | [match.params.jokeId]: "23fc7bcf-2d35-4c70-877f-338eca1fd3ef" |
| formData.[fieldName] | Value for each configured FormData field | [formData.actionType]: "createJoke" |
| error | Added if error detected and if legacyErrorAttributes enabled | true |
| exception.message | Error message, if legacyErrorAttributes enabled and if applicable | "Kaboom!" |
| exception.stacktrace | Error stacktrace, if legacyErrorAttributes enabled and if applicable | [stacktrace] || Status Code | Description |
|------------------------|--------------------------------------------|
|
SpanStatusCode.ERROR | When an exception occurs during evaluation || Event | Attributes | Description |
|-----------|------------------------|---------------------------------|
| Exception |
exception.message | Error message, if applicable |
| | exception.stacktrace` | Error stacktrace, if applicable |